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系列之数据处理编程实例(一)
May 22 Python
跟老齐学Python之大话题小函数(2)
Oct 10 Python
Python对列表排序的方法实例分析
May 16 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python常用函数与用法示例
Jul 02 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
python中图像通道分离与合并实例
Jan 17 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
python 算法题——快乐数的多种解法
May 27 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
python中bisect模块用法实例
2014/09/25 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Python 查看文件的读写权限方法
2018/01/23 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
社会实践自我鉴定
2013/11/07 职场文书
党员公开承诺书范文
2014/03/25 职场文书
常务副总经理任命书
2014/06/05 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
升职自荐信范文
2015/03/27 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技