1

当我使用此方法下载带有 ftplib 的文件时:

ftp = ftplib.FTP()
ftp.connect("host", "port")
ftp.login("user", "pwd")
size = ftp.size('locked')

def handleDownload(block):
    f.write(block)
    pbar.update(pbar.currval+len(block))

f = open("locked", "wb")
pbar=ProgressBar(widgets=[FileTransferSpeed(), Bar('>'), ' ', ETA(), ' ',    ReverseBar('<'), Percentage()],     maxval=size).start()
ftp.retrbinary("RETR locked",handleDownload, 1024)
pbar.finish()

如果文件小于 1mb,则文件将被卡在缓冲区中,直到我下载另一个具有足够数据的文件才能将其推出。我试图通过将 ftp.size(filename) 除以 20 来制作动态缓冲区,但同样的事情仍然发生。那么我该如何做才能下载小于 1 mb 的单个文件并仍然使用回调函数呢?

4

1 回答 1

0

正如 Wooble 在评论中所说,我没有像白痴那样 f.close() 文件。它解决了这个问题。

于 2012-07-25T16:38:01.683 回答