使用Python下载并解压缩文件

我试图下载并打开一个压缩文件,似乎无法使用zipfile文件类型句柄.我在运行这个时遇到错误“AttributeError:addinfourl实例没有属性’seek’”:

import zipfile
import urllib2

def download(url,directory,name):
 webfile = urllib2.urlopen('http://www.sec.gov'+url)
 webfile2 = zipfile.ZipFile(webfile)
 content = zipfile.ZipFile.open(webfile2).read()
 localfile = open(directory+name, 'w')
 localfile.write(content)
 localfile.close()
 return()

download(link.get("href"),'./fails_data', link.text)

解决方法:

你不能在urllib2.urlopened文件上寻找.它支持的方法如下:http://docs.python.org/library/urllib.html#urllib.urlopen.

您必须检索文件(可能使用urllib.urlretrieve,http://docs.python.org/library/urllib.html#urllib.urlretrieve),然后使用zipfile.

或者,您可以读取()urlopened文件,然后将其放入StringIO,然后使用zipfile,如果您想要内存中的压缩数据.如果您只想提取文件而不是使用read,请查看zipfile的extract和extract_all方法.

上一篇:搞懂Python GIL


下一篇:Python zipfile在写入时会挂起