您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页Python之FTP传输

Python之FTP传输

来源:意榕旅游网

访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类!)

import os
from ftplib import FTP
 
class FTPSync():
 def __init__(self, host, usr, psw, log_file):
 self.host = host
 self.usr = usr
 self.psw = psw
 self.log_file = log_file
 
 def __ConnectServer(self):
 try:
 self.ftp = FTP(self.host)
 self.ftp.login(self.usr, self.psw)
 self.ftp.set_pasv(False)
 return True
 except Exception:
 return False
 
 def __CloseServer(self):
 try:
 self.ftp.quit()
 return True
 except Exception:
 return False
 
 def __CheckSizeEqual(self, remoteFile, localFile):
 try:
 remoteFileSize = self.ftp.size(remoteFile)
 localFileSize = os.path.getsize(localFile)
 if localFileSize == remoteFileSize:
 return True
 else:
 return False
 except Exception:
 return None
 
 def __DownloadFile(self, remoteFile, localFile):
 try:
 self.ftp.cwd(os.path.dirname(remoteFile))
 f = open(localFile, 'wb')
 remoteFileName = 'RETR ' + os.path.basename(remoteFile)
 self.ftp.retrbinary(remoteFileName, f.write)
 
 if self.__CheckSizeEqual(remoteFile, localFile):
 self.log_file.write('The File is downloaded successfully to %s' + '
' % localFile)
 return True
 else:
 self.log_file.write('The localFile %s size is not same with the remoteFile' + '
' %localFile)
 return False
 except Exception:
 return False
 
 def __DownloadFolder(self, remoteFolder, localFolder):
 try:
 fileList = []
 self.ftp.retrlines('NLST', fileList.append)
 for remoteFile in fileList:
 localFile = os.path.join(localFolder, remoteFile)
 return self.__DownloadFile(remoteFile, localFile)
 except Exception:
 return False
 
 def SyncFromFTP(self, remoteFolder, localFolder):
 self.__DownloadFolder(remoteFolder, localFolder)
 self.log_file.close()
 self.__CloseServer()

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务