几位楼上的内容
from io import StringIO # 初始化,说明指针指向0 stringIO = StringIO("abc") print(stringIO.getvalue()) print(stringIO.tell()) # 写入字符d stringIO.write("d") print(stringIO.getvalue()) print(stringIO.tell()) # 移动指针到末尾 stringIO.seek(0, 2) print(stringIO.getvalue()) print(stringIO.tell()) # 写入字符e stringIO.write("e") print(stringIO.getvalue()) print(stringIO.tell())
结果
abc 0 dbc 1 dbc 3 dbce 4
是因为the stream position的原因,当你用: d = StringIO('Hello World') 其stream position为0(可以通过d.tell()获得),而后执行 d.readline() stream position移动到11. 类似的,使用 f = StringIO() stream position也为0,而执行 f.write('Hello World') stream position就移动到11了,因此你再执行readline时返回的依旧是空字符串,若你需要返回'Hello World'可以通过 f.seek(0) 调整stream position即可。
d = StringIO('Hello World')
d.readline()
f = StringIO()
f.write('Hello World')
f.seek(0)
扩充内容
Sign in to make a reply
青铜神裔
几位楼上的内容
结果
是因为the stream position的原因,当你用:
d = StringIO('Hello World')
其stream position为0(可以通过d.tell()获得),而后执行d.readline()
stream position移动到11. 类似的,使用f = StringIO()
stream position也为0,而执行f.write('Hello World')
stream position就移动到11了,因此你再执行readline时返回的依旧是空字符串,若你需要返回'Hello World'可以通过f.seek(0)
调整stream position即可。扩充内容