Python之FTP传输
添加时间:2013-6-20 点击量:
接见FTP,无非两件工作:upload和download,比来在项目中须要从ftp多量文件,然后我就试着去实验本身的ftp操纵类,如下(PS:此段有题目,别复制应用,可以参考去实验本身的ftp类!)
Created on Jun 19, 2013
@author: Berlin
import os
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 + \n % localFile)
return True
else:
self.log_file.write(The localFile %s size is not same with the remoteFile + \n % 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()
还有题目存在,终极版本不在此共享!
终极版本首要改进:多线程上传与功能!
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
接见FTP,无非两件工作:upload和download,比来在项目中须要从ftp多量文件,然后我就试着去实验本身的ftp操纵类,如下(PS:此段有题目,别复制应用,可以参考去实验本身的ftp类!)
Created on Jun 19, 2013
@author: Berlin
import os
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 + \n % localFile)
return True
else:
self.log_file.write(The localFile %s size is not same with the remoteFile + \n % 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()
还有题目存在,终极版本不在此共享!
终极版本首要改进:多线程上传与功能!
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》