python實現(xiàn)FTP循環(huán)上傳文件
本文實例為大家分享了python實現(xiàn)FTP循環(huán)上傳文件的具體代碼,供大家參考,具體內(nèi)容如下
測試過程中,有時會用到FTP的數(shù)據(jù)流,或者需要使用FTP反復(fù)上傳文件,所以寫了一個FTP循環(huán)上傳文件的python代碼。
代碼如下:
#coding=utf-8import sysimport osfrom ftplib import FTPfrom time import sleep_XFER_FILE = ’FILE’_XFER_DIR = ’DIR’class Transmitter(object): # 注意:遞歸上傳本地文件或dirs到ftp服務(wù)器 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(’### 連接FTP服務(wù)器: %s ...’ % self.ip) self.ftp.connect(self.ip, self.port, self.timeout) self.ftp.login(self.uname, self.pwd) def clearEnv(self): if self.ftp: self.ftp.close() print(’### 斷開FTP服務(wù)器: %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(’目錄存在 %s’ % file)self.uploadDir(src, file) self.ftp.cwd(’..’) def uploadFile(self, localpath, remotepath=’./’): if not os.path.isfile(localpath): return print(’+++ 上傳 %s to %s:%s’ % (localpath, self.ip, remotepath)) self.ftp.storbinary(’STOR ’ + remotepath, open(localpath, ’rb’)) sleep(0.5) try: self.ftp.delete(remotepath) except: pass # del file when uploaded this file # os.remove(localpath) # sleep(1) 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:UsersAdministratorDownloadsFTPsmp’ transmitter = Transmitter() transmitter.setFtpParams(’10.44.0.2’, ’admin’, ’123123’) while True: transmitter.upload(srcDir) sleep(4)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python2.6版本pip安裝步驟解析2. python公司內(nèi)項目對接釘釘審批流程的實現(xiàn)3. python中Ansible模塊的Playbook的具體使用4. Python自動化之定位方法大殺器xpath5. Python本地及虛擬解釋器配置過程解析6. Python 利用flask搭建一個共享服務(wù)器的步驟7. 基于python實現(xiàn)matlab filter函數(shù)過程詳解8. Python中Anaconda3 安裝gdal庫的方法9. python自動化測試三部曲之request+django實現(xiàn)接口測試10. Python importlib模塊重載使用方法詳解
