【问题标题】:How to add a progress bar in a Python command-line URL downloader?如何在 Python 命令行 URL 下载器中添加进度条?
【发布时间】:2011-12-06 09:26:59
【问题描述】:

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

我想添加一个进度条。我该怎么办?

【问题讨论】:

  • 您的下载器目前有什么用户界面?是命令行脚本吗?
  • 你是命令行...

标签: python command-line download progress-bar


【解决方案1】:

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

>>> 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 处理中。

【讨论】:

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

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

    3. 在任何时候应该填充的进度条的数量由公式给出:(downloaded so far) / (total size),它是一个介于 0 和 1 之间的数字,包括 0 和 1。

    【讨论】:

    • 我无法找出下载的数据的大小,因为我正在将文件复制到一个字符串中,直到复制停止我才能找出它的大小
    • @user1065734 - 进度条的概念是基于显示进度量完成任务所需的工作量乙>。没有这两者中的任何一个都无法生成进度条(尽管您可能希望查看throbbers)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多