Python 的 ftplib 和 tq​​dm

Sar*_*ica 5 python ftplib tqdm

我有一个控制台脚本,它使用ftplib作为后端从 ftp 服务器获取大量文件。我想使用tqdm为用户提供一些反馈,前提是他们打开了“详细”开关。这必须是可选的,因为某些用户可能会在没有tty访问权限的情况下使用脚本。

FTPLIBretrbinary方法采用了回调所以它应该有可能钩tqdm在那里莫名其妙。但是,我不知道这个回调会是什么样子。

小智 4

FTP.retrbinary

为接收到的每个数据块调用回调函数,并使用给出数据块的单个字符串参数。

所以回调可能是这样的:

with open(filename, 'wb') as fd:
    total = ftpclient.size(filename)

    with tqdm(total=total) as pbar:
        def callback_(data):
            l = len(data)
            pbar.update(l)
            fd.write(data)

        ftpclient.retrbinary('RETR {}'.format(filename), callback_)
Run Code Online (Sandbox Code Playgroud)

请注意:此代码未经测试,可能需要进行调整。