我正在使用FtpLib(Python)从ftp服务器下载包含文件的文件夹。但是在开始下载之前,我想知道文件夹的大小。
在我找到的文档中,FTP.size(filename)
但这只是文件而不是文件夹...我可以遍历该文件夹中的所有文件,但是该文件夹可能包含子文件夹。
那么,有谁知道如何使用FtpLib获取文件夹的大小?
经过反复试验,我找到了解决方案。
它基于Alex Thorntons解决方案,但我谨记可能存在子文件夹。当它是文件夹时,ftp.cwd()
命令将成功执行,并且将以递归方式调用该函数。
当ftp.cwd()
命令抛出错误时,它是一个文件,我们可以获取文件大小。类型设置为“ I”(图像),这将强制采用二进制模式,因为ftp.size()
在ASCII模式下不允许使用该命令。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句