Python实现FTP上传文件或文件夹实例(递归)


Posted in Python onJanuary 16, 2017

本文实例讲述了Python实现FTP上传文件或文件夹实例。分享给大家供大家参考。具体如下:

import sys 
import os 
import json 
from ftplib import FTP 
 
_XFER_FILE = 'FILE' 
_XFER_DIR = 'DIR' 
 
class Xfer(object): 
  ''''' 
  @note: upload local file or dirs recursively to ftp server 
  ''' 
  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 '### connect ftp server: %s ...'%self.ip 
      self.ftp.connect(self.ip, self.port, self.timeout) 
      self.ftp.login(self.uname, self.pwd)  
      print self.ftp.getwelcome() 
   
  def clearEnv(self): 
    if self.ftp: 
      self.ftp.close() 
      print '### disconnect ftp server: %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('the dir is exists %s'%file) 
        self.uploadDir(src, file) 
    self.ftp.cwd('..') 
   
  def uploadFile(self, localpath, remotepath='./'): 
    if not os.path.isfile(localpath):  
      return 
    print '+++ upload %s to %s:%s'%(localpath, self.ip, remotepath) 
    self.ftp.storbinary('STOR ' + remotepath, open(localpath, 'rb')) 
   
  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:\sytst" 
  srcFile = r'C:\sytst\sar.c' 
  xfer = Xfer() 
  xfer.setFtpParams('192.x.x.x', 'jenkins', 'pass') 
  xfer.upload(srcDir)   
  xfer.upload(srcFile)

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

Python 相关文章推荐
python实现的阳历转阴历(农历)算法
Apr 25 Python
用Python写冒泡排序代码
Apr 12 Python
解决uWSGI的编码问题详解
Mar 24 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
Flask配置Cors跨域的实现
Jul 12 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python实现名片管理器的示例代码
Dec 17 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
python中threading开启关闭线程操作
May 02 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
Python Socket传输文件示例
Jan 16 #Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 #Python
python一键升级所有pip package的方法
Jan 16 #Python
centos6.7安装python2.7.11的具体方法
Jan 16 #Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 #Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 #Python
python 根据pid杀死相应进程的方法
Jan 16 #Python
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
JavaScript高级程序设计
2006/12/29 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
简单的js表格操作
2016/09/24 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python 中字典嵌套列表的方法
2018/07/03 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书