如何在Python命令行URL下载器中添加进度条?

时间:2011-12-06 09:26:59

标签: python command-line download progress-bar

我在Python中创建了一个简单的命令行URL下载程序。当用户提供URL时,它会从Web读取文件并将其保存在字符串中,然后将该字符串保存在计算机上的文件中。

我想添加进度条。我应该怎么做呢?

2 个答案:

答案 0 :(得分:2)

这是命令行上进度条的非常基本的实现:

>>> def progress_bar(percentage, length):
...     filled = int(length / 100.0 * percentage)
...     return '#' * filled + '_' * (length - filled)
... 
>>> progress_bar(100, 80)
'################################################################################'
>>> progress_bar(10, 80)
'########________________________________________________________________________'
>>> progress_bar(0, 80)
'________________________________________________________________________________'
>>> progress_bar(50, 40)
'####################____________________'
>>> 

如果您希望它静态显示(即不是为每个条形更新输出一个新行,而是一遍又一遍地覆盖同一行),您应该将其包含在某些curses处理中。

答案 1 :(得分:1)

  1. 计算出您正在下载的文件的总大小。这通常出现在HTTP标头Content-Length中(以字节为单位)。

  2. 记录到目前为止下载的总数据。

  3. 随时应填写的进度条数量由公式(downloaded so far) / (total size)给出,该公式为介于0和1之间的数字。