用什么命令替代 urllib.request.urlretrieve?
我现在正在写一个脚本,用来从一个网址下载文件。
import urllib.request
urllib.request.urlretrieve(my_url, 'my_filename')
文档中提到的 urllib.request.urlretrieve
说:
以下的函数和类是从Python 2的模块urllib移植过来的(而不是urllib2)。将来可能会被淘汰。
所以我想避免使用它,这样我就不需要在不久的将来重写这段代码。
我找不到像 download(url, filename)
这样的其他接口在标准库中。如果 urlretrieve
在Python 3中被认为是旧接口,那有什么替代的方法呢?
4 个回答
27
requests库在这方面非常好用。不过,要安装它需要一些依赖项。下面是一个例子。
import requests
r = requests.get('imgurl')
with open('pic.jpg','wb') as f:
f.write(r.content)
33
不推荐使用是一回事,而将来可能会不推荐使用又是另一回事。如果这个功能满足你的需求,那我建议你继续使用 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)