我正在编写一个小应用程序,以通过http下载文件(例如,描述为here)。

我还想添加一个下载进度指示器,以显示下载进度的百分比。

这是我想出的:

sys.stdout.write(rem_file +“...”)
urllib.urlretrieve(rem_file,loc_file,reporthook = dlProgress)

def dlProgress(count,blockSize,totalSize):
百分比= int(count * blockSize * 100 / totalSize)
sys.stdout.write(“%2d %%”“%百分比)
sys.stdout.write(“\ b \ b \ b”)
sys.stdout.flush()

输出:MyFileName ... 9%

还有其他想法或建议吗?

有点烦人的一件事是百分比的第一位数的终端中闪烁的光标。有办法防止这种情况吗?有没有隐藏光标的方法?

编辑:

这是在dlProgress中使用全局变量作为文件名和'\ r'代码的更好选择:

全局rem_file#在dlProgress中使用的全局变量

urllib.urlretrieve(rem_file,loc_file,reporthook = dlProgress)

def dlProgress(count,blockSize,totalSize):
百分比= int(count * blockSize * 100 / totalSize)
sys.stdout.write(“\ r” + rem_file +“...%d %%”%%)
sys.stdout.flush()

输出:MyFileName ... 9%

光标显示在该行的末尾。好多了。

最佳答案

http://pypi.python.org/pypi/progressbar/2.2上有一个针对python的文本进度栏库,您可能会发现它有用:

07-26 03:38