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 相关文章推荐
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python数字图像处理之高级形态学处理
Apr 27 Python
django ajax json的实例代码
May 29 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 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
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
PHP实现的简单日历类
2014/11/29 PHP
简单谈谈favicon
2015/06/10 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
推荐:极酷右键菜单
2006/11/29 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue组件横向树实现代码
2018/08/02 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python解析json文件相关知识学习
2016/03/01 Python
详解python中的json的基本使用方法
2016/12/21 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Python tkinter三种布局实例详解
2020/01/06 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
十一个高级MySql面试题
2014/10/06 面试题
建筑系毕业生自我鉴定
2014/01/24 职场文书
师说教学反思
2014/02/07 职场文书
教师评语大全
2014/04/28 职场文书
质量承诺书格式
2014/05/20 职场文书
关于倡议书的范文
2015/04/29 职场文书
信用卡催款律师函
2015/05/27 职场文书
可可西里观后感
2015/06/08 职场文书
严以律己学习心得体会
2016/01/13 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL