如何在python 2.7中刷新StringIO()?

时间:2019-05-13 06:39:47

标签: python python-2.7 stdout

我试图重定向输出,并不时刷新一次以清除缓冲区。

刷新没有任何作用-甚至无法使用调试器输入该功能。

from io import BytesIO as StringIO

out = StringIO()
out.write("hi")
output = out.getvalue().strip()
assert output == "hi"
out.flush()
output = out.getvalue().strip()
assert output == ""

第二个断言失败,因为输出仍然是“ hi”。 flush()什么也没做。

我怎么了?

1 个答案:

答案 0 :(得分:2)

只需做一个更改,将 out.flush()替换为 out.truncate(0),即可正常工作,如下所示:

from io import BytesIO as StringIO

out = StringIO()
out.write("hi")
output = out.getvalue().strip()
assert output == "hi"
out.seek(0)
out.truncate(0)
output = out.getvalue().strip()
assert output == ""