【背景】

本程序遍历 ftp 目录,列出单个文件大小,统计目录个数、文件个数、文件总大小。目的是在批量下载 FTP 文件时,不严格的验证下载结果的正确性。


【环境】

Windows10 下 Python 3.6.5,第三方包 ftputil 3.4。


【ftp_stat】

#encoding:utf-8#author:walker#date:2018-10-12#summary:遍历ftp目录,列出单个文件大小,统计目录个数、文件个数、文件总大小。importtimeimportftputilFtpHost=r'ftp.ncbi.nlm.nih.gov'#FTP主机SubDir=r'/pubmed/baseline/'#最后的斜线有无不影响,根目录用单斜线即可FtpUser=r'anonymous'FtpPwd=r''FtpEncoding=r'utf-8'defMain():r"""遍历ftp目录,列出单个文件大小,统计目录个数、文件个数、文件总大小。"""fileCnt=0fileSize=0dirCnt=0withftputil.FTPHost(host=FtpHost,user=FtpUser,passwd=FtpPwd)ashost:forparent,dirnames,filenamesinhost.walk(SubDir):forfilenameinfilenames:fileCnt+=1pathfile=host.path.join(parent,filename)singleFileSize=host.path.getsize(pathfile)fileSize+=singleFileSizeprint('\tfile:%s,%dbytes'%(pathfile.encode('latin-1').decode(FtpEncoding),singleFileSize))fordirnameindirnames:dirCnt+=1pathdir=host.path.join(parent,dirname)print('\tdir:%s'%pathdir.encode('latin-1').decode(FtpEncoding))print('fileCnt:%d,fileSize:%dB/%.2fKB/%.2fMB/%.2fGB,dirCnt:%d'%(fileCnt,fileSize,fileSize/1024,fileSize/1024/1024,fileSize/1024/1024/1024,dirCnt))print('fileCnt:%d,fileSize:%dB/%.2fKB/%.2fMB/%.2fGB,dirCnt:%d'%(fileCnt,fileSize,fileSize/1024,fileSize/1024/1024,fileSize/1024/1024/1024,dirCnt))if__name__=='__main__':Main()print('currenttime:%s\n'%time.strftime('%Y-%m-%d%H:%M:%S',time.localtime()))


【相关阅读】

Python3 备份 MySQL/MariaDB(本地+FTP)

FTP 服务端:pyftpdlib

FTP 同步:pyftpsync

最好的 FTP 客户端软件:FileZilla


*** walker ***