python – 使用FtpLib获取文件夹大小
作者:互联网
我正在使用FtpLib(Python)从ftp服务器下载包含文件的文件夹.但我想在开始下载之前知道文件夹的大小.
在文档中我找到了FTP.size(文件名),但这只是文件而不是文件夹…我可以遍历文件夹中的所有文件,但文件夹可能包含子文件夹.
那么有谁知道如何使用FtpLib获取文件夹的大小?
解决方法:
经过一些试验和错误,我找到了解决方案.
它基于Alex Thorntons解决方案,但我记得可能有子文件夹.
当它是一个文件夹时,ftp.cwd()命令会成功,并且递归调用该函数.
当ftp.cwd()命令抛出错误时,它是一个文件,我们可以获取文件大小.类型设置为“I”(图像),这会强制二进制模式,因为在ASCII模式下不允许使用ftp.size()命令.
def get_total_size(self, directory):
size = 0
for filename in self.ftp.nlst(directory):
try:
self.ftp.cwd(filename)
size += self.get_total_size(filename)
except:
self.ftp.voidcmd('TYPE I')
size += self.ftp.size(filename)
return size
标签:python,ftp,ftplib 来源: https://codeday.me/bug/20191009/1876975.html