使用 FtpLib 获取文件夹大小

2023-12-12

我正在使用 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 FtpLib 获取文件夹大小 的相关文章

随机推荐