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使用新浪微博api上传图片到微博示例
Jan 10 Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Python 多进程和数据传递的理解
Oct 09 Python
python实现员工管理系统
Jan 11 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
Python基于WordCloud制作词云图
Nov 29 Python
Python文件时间操作步骤代码详解
Apr 13 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
Python爬虫基础讲解之请求
May 13 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Python编写nmap扫描工具
Jul 21 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自动跳转中英文页面
2008/07/29 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php实现的简单检验登陆类
2015/06/18 PHP
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
python高阶爬虫实战分析
2018/07/29 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
学校司机岗位职责
2013/11/14 职场文书
征婚广告词
2014/03/17 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
迎新生晚会主持词
2015/06/30 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
情人节单身感言
2015/08/03 职场文书
电台广播稿范文
2015/08/19 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
React四级菜单的实现
2022/04/08 Javascript
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技