11

zip ファイルをダウンロードして開こうとしていますが、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)
4

5 に答える 5

9

まとめると、次の例では、圧縮されたファイル内の最初のファイルのコンテンツを Web サイトから取得します。

import urllib.request
import zipfile
    
url = 'http://www.gutenberg.lib.md.us/4/8/8/2/48824/48824-8.zip'
filehandle, _ = urllib.request.urlretrieve(url)
zip_file_object = zipfile.ZipFile(filehandle, 'r')
first_file = zip_file_object.namelist()[0]
file = zip_file_object.open(first_file)
content = file.read()
于 2015-05-19T13:29:26.960 に答える
5

urllib2.urlopened ファイルをシークすることはできません。サポートされているメソッドは、http: //docs.python.org/library/urllib.html#urllib.urlopenにリストされています。

ファイルを取得する必要があります (おそらくhttp://docs.python.org/library/urllib.html#urllib.urlretrieveurllib.urlretrieveを使用) 。zipfile

または、メモリ内の圧縮データが必要な場合はread()urlopened ファイルを に入れ、その上でStringIO使用することもできます。を使用する代わりに、ファイルを抽出するだけの場合は、およびのメソッドzipfileも確認してください。extractextract_allzipfileread

于 2011-07-28T15:17:26.823 に答える