如何使用python下载tarball?

时间:2014-08-22 17:54:54

标签: python file-io tar urllib downloading

我尝试通过下载内容然后将其写入文件来下载tarball。这基本上就是我的代码的工作方式:

from urllib import urlretrieve

contents = urlretrieve('http://example.com/file.tgz')
open('/tmp/my-tar.tgz', 'w').write(contents)

然而,当我这样做时,我收到一个错误(TypeError),该错误表示预期字符缓冲区对象'在致电write

如何将tarball的内容写入文件?

1 个答案:

答案 0 :(得分:4)

From the docs

  

urllib.urlretrieve(url [,filename [,reporthook [,data]]])

     

如有必要,将URL表示的网络对象复制到本地文件。   如果URL指向本地文件或者有效的缓存副本   对象存在,不复制对象。返回一个元组(文件名,   headers)其中filename是对象所在的本地文件名   可以找到,header是对象的info()方法   由urlopen()返回(对于远程对象,可能已缓存)。   例外与urlopen()相同。

write抱怨是因为它希望获得您尝试编写的内容,但它实际上会获得(文件名,标题)元组。

修正版:

from urllib import urlretrieve

filename, headers = urlretrieve('http://example.com/file.tgz', '/tmp/my-tar.tgz')