Python2.7バージョンを使用します。以下は私のサンプルコードです。
import StringIO
import sys
buff = StringIO.StringIO()
buff.write("hello")
print buff.read()
上記のプログラムでは、getvalue()が「hello」を返すのに対して、read()は何も返しません。誰でも問題を解決するのに役立ちますか?私の次のコードは「n」バイトの読み取りを伴うため、read()が必要です。
バッファの位置を先頭にリセットする必要があります。これを行うには、buff.seek(0)
を実行します。
バッファを読み書きするたびに、位置が1つ進められます。空のバッファーで開始するとします。
バッファーの値は_""
_、バッファーの位置は_0
_です。 buff.write("hello")
を実行します。バッファ値は明らかにhello
です。ただし、バッファの位置は_5
_になりました。 read()
を呼び出すと、位置5を超えて読み取ることはありません!したがって、空の文字列を返します。
In [38]: out_2 = StringIO.StringIO('not use write') # be initialized to an existing string by passing the string to the constructor
In [39]: out_2.getvalue()
Out[39]: 'not use write'
In [40]: out_2.read()
Out[40]: 'not use write'
または
In [5]: out = StringIO.StringIO()
In [6]: out.write('use write')
In [8]: out.seek(0)
In [9]: out.read()
Out[9]: 'use write'