1

私はPythonに問題があります。

私の場合: パートナー プラットフォーム (ieh.p//....namesite.../xxx) から gzip 圧縮されたファイルがあります。ブラウザからリンクをクリックすると、(つまり namefile.xml) のようなファイルがダウンロードされます。 .gz)。

だから... Pythonでこのファイルを読むと、解凍して読むことができます。

コード:

content = gzip.open(namefile.xml.gz,'rb')
print content.read()

しかし、リモートソースからファイルを読み込もうとするとできません。リモートファイルから、エンコードされた文字列のみを読み取ることができますが、デコードすることはできません。

コード:

response = urllib2.urlopen(url)
encoded =response.read()
print encoded

このコードを使用すると、エンコードされた文字列を読み取ることができます...しかし、gzipまたはlzipでデコードできません。

何かアドバイスはありますか?どうもありがとう

4

3 に答える 3

4

残念ながら、@Aya が提案するメソッドは機能しません。GzipFileseekはファイル オブジェクトのメソッドを広範囲に使用するためです (応答ではサポートされていません)。

したがって、基本的に 2 つのオプションがあります。

  1. リモート ファイルの内容を に読み込みio.StringIO、オブジェクトを に渡しますgzip.GzipFile(ファイルが小さい場合)。

  2. ファイルをディスク上の一時ファイルにダウンロードし、使用しますgzip.open

zlibモジュールを使用して独自のリーダーを実装する別のオプション (コーディングが必要) があります。かなり簡単ですが、魔法の定数について知る必要があります ( zlib で gzip ストリームを解凍するにはどうすればよいですか? )。

于 2013-04-26T20:15:12.830 に答える
0

Python 3.2 以降を使用している場合、GzipFile のバグ (tellサポートが必要) は修正されていますが、修正を Python 2.x にバックポートする予定はないようです。

于 2013-08-27T13:28:55.963 に答える