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笔记(2)
Oct 24 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
Python中元组,列表,字典的区别
May 21 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
Python Json序列化与反序列化的示例
Jan 31 Python
Django中的静态文件管理过程解析
Aug 01 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
python 实现的车牌识别项目
Jan 25 Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 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
Apache设置虚拟WEB
2006/10/09 PHP
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
保安自我鉴定范文
2013/12/08 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
2014年图书室工作总结
2014/12/09 职场文书
勤俭节约主题班会
2015/08/13 职场文书