python实现FTP循环上传文件


Posted in Python onMarch 20, 2020

本文实例为大家分享了python实现FTP循环上传文件的具体代码,供大家参考,具体内容如下

测试过程中,有时会用到FTP的数据流,或者需要使用FTP反复上传文件,所以写了一个FTP循环上传文件的python代码。

代码如下:

#coding=utf-8

import sys
import os
from ftplib import FTP
from time import sleep

_XFER_FILE = 'FILE'
_XFER_DIR = 'DIR'


class Transmitter(object): # 注意:递归上传本地文件或dirs到ftp服务器

  def __init__(self):
    self.ftp = None

  def __del__(self):
    pass

  def setFtpParams(self, ip, uname, pwd, port=21, timeout=60):
    self.ip = ip
    self.uname = uname
    self.pwd = pwd
    self.port = port
    self.timeout = timeout

  def initEnv(self):
    if self.ftp is None:
      self.ftp = FTP()
      print('### 连接FTP服务器: %s ...' % self.ip)
      self.ftp.connect(self.ip, self.port, self.timeout)
      self.ftp.login(self.uname, self.pwd)

  def clearEnv(self):
    if self.ftp:
      self.ftp.close()
      print('### 断开FTP服务器: %s!' % self.ip)
      self.ftp = None

  def uploadDir(self, localdir='./', remotedir='./'):
    if not os.path.isdir(localdir):
      return
    self.ftp.cwd(remotedir)
    for file in os.listdir(localdir):
      src = os.path.join(localdir, file)
      if os.path.isfile(src):
        self.uploadFile(src, file)
      elif os.path.isdir(src):
        try:
          self.ftp.mkd(file)
        except:
          sys.stderr.write('目录存在 %s' % file)
        self.uploadDir(src, file)
    self.ftp.cwd('..')

  def uploadFile(self, localpath, remotepath='./'):
    if not os.path.isfile(localpath):
      return
    print('+++ 上传 %s to %s:%s' % (localpath, self.ip, remotepath))
    self.ftp.storbinary('STOR ' + remotepath, open(localpath, 'rb'))
    sleep(0.5)
    try:
      self.ftp.delete(remotepath)
    except:
      pass
    # del file when uploaded this file
    # os.remove(localpath)
    # sleep(1)

  def __filetype(self, src):
    if os.path.isfile(src):
      index = src.rfind('\\')
      if index == -1:
        index = src.rfind('/')
      return _XFER_FILE, src[index + 1:]
    elif os.path.isdir(src):
      return _XFER_DIR, ''

  def upload(self, src):
    filetype, filename = self.__filetype(src)
    self.initEnv()
    if filetype == _XFER_DIR:
      self.srcDir = src
      self.uploadDir(self.srcDir)
    elif filetype == _XFER_FILE:
      self.uploadFile(src, filename)
    self.clearEnv()


if __name__ == '__main__':
  srcDir = r'C:\Users\Administrator\Downloads\FTP\smp'
  transmitter = Transmitter()
  transmitter.setFtpParams('10.44.0.2', 'admin', '123123')

  while True:
    transmitter.upload(srcDir)
    sleep(4)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python 代码调试技巧示例代码
Aug 11 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
Python 图片添加美颜效果
Apr 28 Python
python实现ftp文件传输功能
Mar 20 #Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 #Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 #Python
python实现ftp文件传输系统(案例分析)
Mar 20 #Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 #Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 #Python
Python文件操作基础流程解析
Mar 19 #Python
You might like
php 购物车的例子
2009/05/04 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php define的第二个参数使用方法
2013/11/04 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
php实现微信支付之现金红包
2018/05/30 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
Python中optparser库用法实例详解
2018/01/26 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python中的集合介绍
2019/01/28 Python
Python简单基础小程序的实例代码
2019/04/28 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
Java程序员面试90题
2013/10/19 面试题
初中班主任寄语
2014/04/04 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
如何基于python实现单目三维重建详解
2022/06/25 Python