Pythonスクリプトを使用してWebサーバーからgzファイルを読み込もうとしています。ソースファイルのサイズは 60Mb 以上です。ファイル全体が読み取られて解凍され、内容が読み取られるのを待ちたくありません。むしろ、数バイトを受信したときに情報を解凍したいと考えています。やってみましたが、「CRC check failed 」などのエラーでオフになってしまいます。サーバーはコンテンツエンコーディングを「gzip」として返すため、gzip モジュールを使用しています。私もzlibで運試しをしましたが、成果はありませんでした。Mozilla Firefox または Google Chrome が上記を問題なく実行しているのを見てきました。HTTP ヘッダーを確認したところ、コンテンツが一度にすべて受信されていないことがわかりましたが、ブラウザーは受信時に解凍された部分データをそのまま表示できます。どうやってやっているの ?どんな助けでも大歓迎です。
質問する
139 次
1 に答える
1
パラメータ 31とともに使用zlib.decompressobj
します。これにより、gzip 入力を一度に 1 つずつ解凍できます。wbits
deobj.decompress()
31 は 31 ビットを意味するものではありません。実際には 15 + 16 です。ここで、15 は 2^15 バイトのスライディング ウィンドウの最大サイズを表し、16 はgzip形式のデコードを要求するオプションです。16 を追加しないと、zlib形式がデコードされ、gzip 入力が拒否されます。
于 2012-08-30T12:43:50.830 に答える