python實現(xiàn)FTP循環(huán)上傳文件
本文實例為大家分享了python實現(xiàn)FTP循環(huán)上傳文件的具體代碼,供大家參考,具體內(nèi)容如下
測試過程中,有時會用到FTP的數(shù)據(jù)流,或者需要使用FTP反復上傳文件,所以寫了一個FTP循環(huán)上傳文件的python代碼。
代碼如下:
#coding=utf-8 import sys import os from ftplib import FTP from time import sleep _XFER_FILE = 'FILE' _XFER_DIR = 'DIR' class Transmitter(object): # 注意:遞歸上傳本地文件或dirs到ftp服務器 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服務器: %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服務器: %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:\Users\Administrator\Downloads\FTP\smp' transmitter = Transmitter() transmitter.setFtpParams('10.44.0.2', 'admin', '123123') while True: transmitter.upload(srcDir) sleep(4)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Object arrays cannot be loaded when
這篇文章主要介紹了Object arrays cannot be loaded when allow_pickle=False,本文給大家分享問題解決思路,需要的朋友可以參考下2022-11-11Python技法之簡單遞歸下降Parser的實現(xiàn)方法
遞歸下降解析器可以用來實現(xiàn)非常復雜的解析,下面這篇文章主要給大家介紹了關于Python技法之簡單遞歸下降Parser的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05如何用python多次調(diào)用exe文件運行不同的結(jié)果
有個C++項目是讀取配置參數(shù)文件并打印對應的結(jié)果,后來需要多次修改配置文件并運行,于是想到寫個python腳本執(zhí)行這一過程,今天通過本文給大家分享python多次調(diào)用exe文件運行不同的結(jié)果,感興趣的朋友一起看看吧2023-05-05Python本地cache不當使用導致內(nèi)存泄露的問題分析與解決
最近在項目開發(fā)中遇到了本地cache不當使用導致的一個內(nèi)存泄露問題,所以本文主要分析了問題出現(xiàn)的原因已經(jīng)解決方法,需要的小伙伴可以參考下2023-08-08在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù)的方法
這篇文章主要介紹了在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù),對此Django框架中提供了便利的插入和更新方法,需要的朋友可以參考下2015-07-07Django3基于WebSocket實現(xiàn)WebShell的詳細過程
最近工作中需要開發(fā)前端操作遠程虛擬機的功能,簡稱WebShell,普通應用大部分用的都是wsgi.py配合nginx部署線上服務. 這次主要使用asgi.py,具體實現(xiàn)過程跟隨小編一起看看吧2021-08-08