编写Python脚本来实现最简单的FTP下载的教程
访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类!)
importos fromftplibimportFTP classFTPSync(): 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) returnTrue exceptException: returnFalse def__CloseServer(self): try: self.ftp.quit() returnTrue exceptException: returnFalse def__CheckSizeEqual(self,remoteFile,localFile): try: remoteFileSize=self.ftp.size(remoteFile) localFileSize=os.path.getsize(localFile) iflocalFileSize==remoteFileSize: returnTrue else: returnFalse exceptException: returnNone 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) ifself.__CheckSizeEqual(remoteFile,localFile): self.log_file.write('TheFileisdownloadedsuccessfullyto%s'+'\n'%localFile) returnTrue else: self.log_file.write('ThelocalFile%ssizeisnotsamewiththeremoteFile'+'\n'%localFile) returnFalse exceptException: returnFalse def__DownloadFolder(self,remoteFolder,localFolder): try: fileList=[] self.ftp.retrlines('NLST',fileList.append) forremoteFileinfileList: localFile=os.path.join(localFolder,remoteFile) returnself.__DownloadFile(remoteFile,localFile) exceptException: returnFalse defSyncFromFTP(self,remoteFolder,localFolder): self.__DownloadFolder(remoteFolder,localFolder) self.log_file.close() self.__CloseServer()