编程语言
首页 > 编程语言> > python – 使用FtpLib获取文件夹大小

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