The examples in this article share the specific code of python to realize FTP uploading files for your reference. The specific content is as follows
During the test, sometimes the FTP data stream is used, or it is necessary to use FTP to upload files repeatedly, so I wrote a python code for FTP to upload files in a loop.
code show as below:
# coding=utf-8import sys
import os
from ftplib import FTP
from time import sleep
_ XFER_FILE ='FILE'
_ XFER_DIR ='DIR'classTransmitter(object): #note:Recursively upload local files or dirs 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 to FTP server: %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('###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('Directory exists%s'% file)
self.uploadDir(src, file)
self.ftp.cwd('..')
def uploadFile(self, localpath, remotepath='./'):if not os.path.isfile(localpath):returnprint('+++Upload%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)
The above is the whole content of this article, I hope it will be helpful to everyone's study.
Recommended Posts