Python实现FTP上传文件或文件夹实例(递归)

作者:xudacheng06 时间:2021-11-21 06:05:30 

本文实例讲述了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,ftp,上传,文件
0
投稿

猜你喜欢

  • ASP中实现分页显示的七种方法

    2007-09-20 13:19:00
  • CI框架整合smarty步骤详解

    2023-11-14 11:18:11
  • FileUpload上传图片预览不变形

    2010-08-05 21:25:00
  • tensorflow如何继续训练之前保存的模型实例

    2023-05-22 22:54:57
  • Pytorch搭建简单的卷积神经网络(CNN)实现MNIST数据集分类任务

    2021-04-24 02:25:16
  • 关于python中逆序的三位数

    2021-08-09 05:17:28
  • ASP中使用SQL语句教程

    2008-09-03 12:17:00
  • python中通过selenium简单操作及元素定位知识点总结

    2021-07-18 15:34:37
  • python条件语句和while循环语句

    2023-08-31 06:17:56
  • 最简洁的asp多重查询的解决方案

    2011-04-15 10:50:00
  • Django模板继承与模板的导入实例详解

    2023-04-03 14:41:28
  • asp修改文件和文件夹的名字的代码

    2011-04-11 11:04:00
  • Python数值求解微分方程方法(欧拉法,隐式欧拉)

    2023-06-29 10:45:29
  • 页面表达常用方式

    2010-05-27 12:42:00
  • Python利用Selenium实现网站自动签到功能

    2021-04-22 18:20:02
  • Codeigniter发送邮件的方法

    2023-11-15 05:08:25
  • 如何提升JavaScript的运行速度(DOM篇)

    2010-05-17 13:32:00
  • String 的扩展方法

    2008-05-12 22:36:00
  • django admin 根据choice字段选择的不同来显示不同的页面方式

    2022-04-26 06:39:10
  • python 如何对Series中的每一个数据做运算

    2023-11-19 23:33:07
  • asp之家 网络编程 m.aspxhome.com