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操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python自动生产表情包
Mar 17 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python中Proxypool库的安装与配置
Oct 19 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
基于python生成英文版词云图代码实例
May 16 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
使用Django实现商城验证码模块的方法
Jun 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加密解密函数代码
2013/06/19 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Django web框架使用url path name详解
2019/04/29 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
费用会计岗位职责
2014/01/01 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
python基础之文件操作
2021/10/24 Python
mysql如何查询连续记录
2022/05/11 MySQL