Python GZIP 圧縮における「TypeError: 'str' はバッファ インターフェイスをサポートしていません」のトラブルシューティング
Python の gzip モジュールを使用して文字列を圧縮する場合、開発者は、「TypeError: 'str' はバッファ インターフェイスをサポートしていません。」というエラーが発生する可能性があります。このエラーは、Python 2.x から Python 3.x への移行で文字列データ型が変更されたことが原因で発生します。
この問題を解決するには、文字列をバイトにエンコードしてから、文字列を書き込む必要があります。出力ファイル。次のコード スニペットは、質問で提供されたコードを修正します:
plaintext = input("Please enter the text you want to compress").encode('UTF-8') filename = input("Please enter the desired filename") with gzip.open(filename + ".gz", "wb") as outfile: outfile.write(plaintext)
プレーンテキストをバイトにエンコードすることで、Python 3.x の改訂された文字列データ型との互換性が確保されます。さらに、混乱を避けるために、「プレーンテキスト」と「ファイル名」は Python の予約語であるため、入力ファイルと出力ファイルに異なる変数名を使用することをお勧めします。
たとえば、次のコードは、次の方法を示しています。 UTF-8 エンコードを使用してポーランド語のテキストを効果的に圧縮します:
text = 'Polish text: ąćęłńóśźżĄĆĘŁŃÓŚŹŻ' filename = 'foo.gz' with gzip.open(filename, 'wb') as outfile: outfile.write(bytes(text, 'UTF-8')) with gzip.open(filename, 'r') as infile: decompressed_text = infile.read().decode('UTF-8') print(decompressed_text)
以上がPython GZIP 圧縮で「TypeError: \'str\' はバッファ インターフェイスをサポートしていません」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。