Python 进度条和下载

新手上路,请多包涵

我有一个 Python 脚本,它启动一个作为可下载文件的 URL。有什么方法可以让 Python 显示下载进度而不是启动浏览器?

原文由 user1607549 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 357
1 个回答

我刚刚写了一个超级简单(有点老套)的方法来从某个网站上抓取 PDF。请注意,它只能在基于 Unix 的系统(Linux、mac os)上正常工作,因为 PowerShell 无法处理 "\r"

 import sys
import requests

link = "http://indy/abcde1245"
file_name = "download.data"
with open(file_name, "wb") as f:
    print("Downloading %s" % file_name)
    response = requests.get(link, stream=True)
    total_length = response.headers.get('content-length')

    if total_length is None: # no content length header
        f.write(response.content)
    else:
        dl = 0
        total_length = int(total_length)
        for data in response.iter_content(chunk_size=4096):
            dl += len(data)
            f.write(data)
            done = int(50 * dl / total_length)
            sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) )
            sys.stdout.flush()

它使用 请求库,因此您需要安装它。这会将类似以下内容输出到您的控制台:

下载download.data

[=============]

进度条在脚本中是 52 个字符宽(2 个字符就是 [] 所以 50 个字符的进度)。每个 = 代表下载量的 2%。

原文由 Endophage 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题