使用什么命令代替 urllib.request.urlretrieve?

新手上路,请多包涵

我目前正在编写一个从 URL 下载文件的脚本

import urllib.request
urllib.request.urlretrieve(my_url, 'my_filename')

文档 urllib.request.urlretrieve 状态:

以下函数和类是从 Python 2 模块 urllib(与 urllib2 相反)移植而来的。它们可能会在将来的某个时候被弃用。

因此我想避免它,这样我就不必在不久的将来重写这段代码。

我无法在标准库中找到另一个接口,如 download(url, filename) 。如果 urlretrieve 被认为是 Python 3 中的遗留接口,那么替代品是什么?

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

阅读 956
2 个回答

弃用 是一回事, 将来某个时候可能会弃用 是另一回事。如果它适合您的需要,我会继续使用 urlretrieve

也就是说,您可以使用 shutil.copyfileobj

 from urllib.request import urlopen
from shutil import copyfileobj

with urlopen(my_url) as in_stream, open('my_filename', 'wb') as out_file:
    copyfileobj(in_stream, out_file)

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

requests 非常适合这个。虽然要安装它,但有一些依赖项。这是一个例子。

 import requests
r = requests.get('imgurl')
with open('pic.jpg','wb') as f:
  f.write(r.content)

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

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