1. ホーム
  2. python

[解決済み] インメモリバイト(BytesIO)の書き込みと読み出しは空白になる

2023-01-23 02:15:41

質問

PythonのBytesIOクラスを試したいと思いました。

実験として、私はメモリ内のZIPファイルに書き込み、そしてそのZIPファイルからバイトを読み出すことを試みました。そこで、ファイルオブジェクトを gzip に渡す代わりに BytesIO オブジェクトを渡す。以下はスクリプトの全体です。

from io import BytesIO
import gzip

# write bytes to zip file in memory
myio = BytesIO()
with gzip.GzipFile(fileobj=myio, mode='wb') as g:
    g.write(b"does it work")

# read bytes from zip file in memory
with gzip.GzipFile(fileobj=myio, mode='rb') as g:
    result = g.read()

print(result)

しかし、これは空の bytes オブジェクトを返します。 result . これは、Python 2.7 と 3.4 の両方で発生します。私は何を見逃しているのでしょうか?

どのように解決するのですか?

あなたは、次のことを行う必要があります。 seek メモリ内の初期ファイルを書き込んだ後、ファイルの先頭に戻る...

myio.seek(0)