加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python FTP传输的简单示例

发布时间:2020-12-17 17:51:15 所属栏目:Python 来源:网络整理
导读:对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧!

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


# @param Python之FTP传输
# @author 编程之家 52php.cn|52php.cn 

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,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,localFolder):
        self.__DownloadFolder(remoteFolder,localFolder)
        self.log_file.close()
        self.__CloseServer()

# End www.52php.cn

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读