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 相关文章推荐
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python匹配中文的正则表达式
May 11 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
Python eval函数介绍及用法
Nov 09 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
天津市收音机工业发展史
2021/03/04 无线电
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python实现批量按比例缩放图片效果
2018/03/30 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
python批量图片处理简单示例
2019/08/06 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
Python调用JavaScript代码的方法
2020/10/27 Python
python 实现控制鼠标键盘
2020/11/27 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
给物业的表扬信
2014/01/21 职场文书
服务之星事迹材料
2014/05/03 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS