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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
选择python进行数据分析的理由和优势
Jun 25 Python
python保存字典和读取字典的实例代码
Jul 07 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
python 安装移动复制第三方库操作
Jul 13 Python
python实现剪贴板的操作
Jul 01 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高手需要要掌握的知识点
2014/08/21 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
javascript事件问题
2009/09/05 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
javascript实现微信分享
2014/12/23 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
使用python实现baidu hi自动登录的代码
2013/02/10 Python
详解Python中的文本处理
2015/04/11 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
python中metaclass原理与用法详解
2019/06/25 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
房屋委托书范本
2014/04/04 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
学生退学证明
2015/06/23 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书