import io
string_out = io.StringIO()
string_out.write("hello")
print(string_out.getvalue())
string_out.write("new Hello")
print(string_out.getvalue())OutPut1: hello
OutPut2: hellonew Hello 我怎样才能从流中刷新第一个输入,这样第二个流的输出就变成了新的Hello。
发布于 2019-11-25 07:28:17
您可以使用函子truncate()。它不会删除流,而是调整它的大小,所以给它赋值0应该可以去掉流中的所有字节。您还需要使用seek()来更改流的位置。与truncate()一样,给它一个0的值应该会抵消流开始时的位置。祝好运!
import io
string_out = io.StringIO()
string_out.write("hello")
print(string_out.getvalue())
string_out.seek(0)
string_out.truncate(0)
string_out.write("new Hello")
print(string_out.getvalue())更新:截断(0)和截断()之间有什么区别?
truncate()使用当前默认位置,truncate(0)使用起始位置。因为您已经在截断(0)之前指定了(0),所以在截断之前,位置被移动到句子的开头。下面的例子应该可以帮你弄清楚。
使用truncate()和seek(10)的

使用truncate()和seek(0)的

发布于 2019-11-25 07:27:56
getvalue get是整个字符串,您可以通过查找和阅读来完成所需的操作:
import io
string_out = io.StringIO()
string_out.write("hello")
string_out.seek(0)
print(string_out.read())
# hello
string_out.write("new Hello")
string_out.seek(0+len("hello"))
print(string_out.read())
# new Hellow发布于 2019-11-25 08:57:33
创建一个new StringIO而不是截断和seeking.When --您只需要通过这个thread,在Python3中,创建一个新的流而不是重用一个空白流-- 11%更快,而创建一个新的流而不是使用3KB数据的流要快5%。
https://stackoverflow.com/questions/59026837
复制相似问题