Python实现FTP上传文件或文件夹实例(递归)
短信预约 -IT技能 免费直播动态提醒
本文实例讲述了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):
class="lazy" data-src = os.path.join(localdir, file)
if os.path.isfile(class="lazy" data-src):
self.uploadFile(class="lazy" data-src, file)
elif os.path.isdir(class="lazy" data-src):
try:
self.ftp.mkd(file)
except:
sys.stderr.write('the dir is exists %s'%file)
self.uploadDir(class="lazy" data-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, class="lazy" data-src):
if os.path.isfile(class="lazy" data-src):
index = class="lazy" data-src.rfind('\')
if index == -1:
index = class="lazy" data-src.rfind('/')
return _XFER_FILE, class="lazy" data-src[index+1:]
elif os.path.isdir(class="lazy" data-src):
return _XFER_DIR, ''
def upload(self, class="lazy" data-src):
filetype, filename = self.__filetype(class="lazy" data-src)
self.initEnv()
if filetype == _XFER_DIR:
self.class="lazy" data-srcDir = class="lazy" data-src
self.uploadDir(self.class="lazy" data-srcDir)
elif filetype == _XFER_FILE:
self.uploadFile(class="lazy" data-src, filename)
self.clearEnv()
if __name__ == '__main__':
class="lazy" data-srcDir = r"C:sytst"
class="lazy" data-srcFile = r'C:sytstsar.c'
xfer = Xfer()
xfer.setFtpParams('192.x.x.x', 'jenkins', 'pass')
xfer.upload(class="lazy" data-srcDir)
xfer.upload(class="lazy" data-srcFile)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341