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中字符串内置函数的用法总结
Sep 13 Python
python找出完数的方法
Nov 12 Python
int在python中的含义以及用法
Jun 27 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
Django学习之文件上传与下载
Oct 06 Python
python 实现多线程下载视频的代码
Nov 15 Python
在Django中实现添加user到group并查看
Nov 18 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
在终端启动Python时报错的解决方案
Nov 20 Python
Python机器学习之底层实现KNN
Jun 20 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
删除重复数据的算法
2006/11/23 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
AngularJS语法详解
2015/01/23 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
详解Python进程间通信之命名管道
2017/08/28 Python
python中的常量和变量代码详解
2018/07/25 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
一名女生的自荐信
2013/12/08 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
新年主持词
2014/03/27 职场文书
小学运动会口号
2014/06/07 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
单位工作证明
2014/10/07 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
小学优秀班主任材料
2014/12/17 职场文书
写给医生的感谢信
2015/01/22 职场文书
安徽导游词
2015/02/12 职场文书
唐山大地震观后感
2015/06/05 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书