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数据类型学习笔记
Jan 13 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
python2.7实现邮件发送功能
Dec 12 Python
python实现Virginia无密钥解密
Mar 20 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
解决django model修改添加字段报错的问题
Nov 18 Python
python快速排序的实现及运行时间比较
Nov 22 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 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程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP 文件扩展名 获取函数
2009/06/03 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Python算法应用实战之栈详解
2017/02/04 Python
Python绘制七段数码管实例代码
2017/12/20 Python
Python中static相关知识小结
2018/01/02 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
老总助理工作岗位职责
2014/02/06 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
美容院经理岗位职责
2014/04/03 职场文书
食品安全工作方案
2014/05/07 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
求职教师自荐书
2014/06/19 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
2014年医务科工作总结
2014/12/18 职场文书
大学生村官个人总结
2015/02/15 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis