2012-07-25 175 views
1

当我下载使用这种方法FTPLIB文件:Python:ftp文件卡在缓冲区中?

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的单个文件并仍然使用回调函数?

+1

我认为这很可能是因为你永远不会关闭文件,而不是被缓冲的ftp。 – geoffspear 2012-07-25 16:29:00

+0

你有一个有效的点,我会尝试。 – 2012-07-25 16:34:56

回答

0

由于Wooble在评论中表示,我没有f.close()文件像一个白痴。它解决了这个问题。