2012-07-25 174 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()文件像一個白癡。它解決了這個問題。