我试图下载tarball文件并使用python将其保存在本地。使用urllib非常简单:
import urllib
urllib2.urlopen(url, 'compressed_file.tar.gz')
tar = tarfile.open('compressed_file.tar.gz')
print tar.getmembers()
所以我的问题非常简单:使用urllib2库实现这一目标的方法是什么?
答案 0 :(得分:1)
引用docs:
urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])
打开URL网址,可以是字符串或 请求对象。
data
可以是指定要发送到服务器的其他数据的字符串,如果不需要此类数据,则可以是None
。
urlopen
接口文档中没有任何内容说明,第二个参数是应该写入响应的文件名。
您需要显式写入从响应文件中读取的数据:
r = urllib2.urlopen(url)
CHUNK_SIZE = 1 << 20
with open('compressed_file.tar.gz', 'wb') as f:
# line belows downloads all file at once to memory, and dumps it to file afterwards
# f.write(r.read())
# below is preferable lazy solution - download and write data in chunks
while True:
chunk = r.read(CHUNK_SIZE)
if not chunk:
break
f.write(chunk)