この記事の例では、参照用にFTPアップロードファイルを実現するためのpythonの特定のコードを共有しています。具体的な内容は次のとおりです。
テスト中に、FTPデータストリームが使用される場合や、FTPを使用してファイルを繰り返しアップロードする必要がある場合があるため、FTPでファイルをループでアップロードするためのPythonコードを作成しました。
コードは次のように表示されます。
# coding=utf-8import sys
import os
from ftplib import FTP
from time import sleep
_ XFER_FILE ='FILE'
_ XFER_DIR ='DIR'classTransmitter(object): #注意:ローカルファイルまたはdirを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):returnprint('+++アップロード%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)
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts