gpt4 book ai didi

python - 如何跟踪使用 ftp.retrbinary 下载的百分比?

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:55 24 4
gpt4 key购买 nike

我目前正在使用此代码打印出使用 ftp.retrbinary 从 ftp 服务器下载的百分比,但下载完成时完成了 0.27%,并且只说 sizeWritten 完成了 27828224 位。我哪里错了?

from ftplib import FTP

ftp = FTP('host')
ftp.login('usr','pass')
totalSize = ftp.size('100file.zip')
print(totalSize, "bytes")

def download_file(block):
global sizeWritten
file.write(block)
sizeWritten += 1024
print(sizeWritten, "= size written", totalSize, "= total size")
percentComplete = sizeWritten / totalSize
print (percentComplete, "percent complete")

try:
file = open('100file.zip', "wb")
ftp.retrbinary("RETR " + '100file.zip' ,download_file)
print("Download Successful!")
except:
print("Error")

file.close()
ftp.close()

最佳答案

您忽略了 block 的大小,并假装每个 block 都是 1K:

sizeWritten += 1024

只需将其更改为:

sizeWritten += len(block)

您的客户端可以使用 blocksize 向服务器发送最大块大小。争论。但是您没有传递一个,所以您得到默认值 8192。

那么,如果您的偏差恰好是 8 倍,为什么您不能准确地获得 12.5%?好吧,首先,最后一个 block 几乎总是小于最大值,所以你应该期望比 12.5% 多一点。其次,您只为服务器提供了一个最大 block 大小;它可以自由决定它永远不想发送超过 4K 的视频,在这种情况下,您会得到略高于 25% 的视频。

关于python - 如何跟踪使用 ftp.retrbinary 下载的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com