Python2.7 버전 사용. 아래는 제 샘플 코드입니다.
import StringIO
import sys
buff = StringIO.StringIO()
buff.write("hello")
print buff.read()
위 프로그램에서 read()는 아무 것도 반환하지 않고 getvalue()가 & "hello" 를 반환합니다. 누구든지 이 문제를 해결하는 데 도움을 줄 수 있나요? 내 다음 코드가 & n & n 바이트를 읽는 것과 관련이 있기 때문에 read()가 필요합니다.
버퍼 위치를 처음으로 재설정해야 합니다. buff.seek(0)`를 실행하면 됩니다.
버퍼를 읽거나 쓸 때마다 위치가 한 단계씩 전진합니다. 빈 버퍼에서 시작한다고 가정해 봅시다.
버퍼 값은 &&
이고, 버퍼 위치는 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'