ブログや他のスレッドにあるチュートリアルや例に従って、.gz
ファイルに書き込む方法は、バイナリモードで開き、文字列をそのまま書き込むことです。
import gzip
with gzip.open('file.gz', 'wb') as f:
f.write('Hello world!')
私はそれを試しました、そして次の例外を得ました:
File "C:\Users\Tal\Anaconda3\lib\gzip.py", line 258, in write
data = memoryview(data)
TypeError: memoryview: a bytes-like object is required, not 'str'
だから私はテキストモードでファイルを開こうとしました:
import gzip
with gzip.open('file.gz', 'w') as f:
f.write('Hello world!')
しかし、私は同じエラーを受け取りました:
File "C:\Users\Tal\Anaconda3\lib\gzip.py", line 258, in write
data = memoryview(data)
TypeError: memoryview: a bytes-like object is required, not 'str'
この問題はPython3でどのように対処できますか?
mode='wb'
バイナリモードで開いたファイルに書き込むときは、文字列ではなくバイトを書き込む必要があります。 str.encode
を使用して文字列をエンコードします。
with gzip.open('file.gz', 'wb') as f:
f.write('Hello world!'.encode())
mode='wt'
(OPが見つかりました)または、wt
(explicittext)モードでファイルを開いたときに、ファイルに文字列を書き込むことができます。
with gzip.open('file.gz', 'wt') as f:
f.write('Hello world!')
documentation には、使用に関する便利な例がいくつかあります。