파이썬에서 StringIO의 read() 사용 시 데이터 가져오기 실패

Python2.7 버전 사용. 아래는 제 샘플 코드입니다.

import StringIO
import sys

buff = StringIO.StringIO()
buff.write("hello")
print buff.read()

위 프로그램에서 read()는 아무 것도 반환하지 않고 getvalue()가 & "hello" 를 반환합니다. 누구든지 이 문제를 해결하는 데 도움을 줄 수 있나요? 내 다음 코드가 & n & n 바이트를 읽는 것과 관련이 있기 때문에 read()가 필요합니다.

질문에 대한 의견 (3)

버퍼 위치를 처음으로 재설정해야 합니다. buff.seek(0)`를 실행하면 됩니다.

버퍼를 읽거나 쓸 때마다 위치가 한 단계씩 전진합니다. 빈 버퍼에서 시작한다고 가정해 봅시다.

버퍼 값은 &&이고, 버퍼 위치는 0입니다. buff.write("hello")를 수행합니다. 분명히 버퍼 값은 이제hello입니다. 하지만 버퍼 위치는 이제5입니다. read()를 호출하면 5번 위치 이후에는 읽을 수 있는 내용이 없습니다! 따라서 빈 문자열을 반환합니다.

해설 (0)
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'
해설 (1)