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 に答える