我的 ISP 每天强制断开我的连接一次。如果在下载期间发生这种情况,则下载将永远暂停,而不会引发任何异常。
现在我只能考虑线程下载,然后检查最大时间或不时读取文件大小,然后检查它是否仍在增长。
我现在正在使用的功能:
def download_with_progress(url,localFileName,overwrite=False):
if not os.path.exists(localFileName) or overwrite == True:
urlretrieve(url, localFileName, reporthook=print_progress)
sys.stdout.write("\r") #remove previously printed percent sign
sys.stdout.flush()
def print_progress(count, blockSize, totalSize):
total_MB = (totalSize) / (1000 * 1000)
current_MB = (blockSize * count) / (1000 * 1000)
percent = int(count*blockSize*100/totalSize)
sys.stdout.write("\r%d%% (%d/%d MB)" % (percent, current_MB, total_MB))
sys.stdout.flush()
既然我已经在这里:是这样计算的total_MB
还是current_MB
正确计算的?还是我应该除以1024 * 1024
?我将它们显示为四舍五入的整数,所以这不是一个真正的问题。