首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何刷新Python流

如何刷新Python流
EN

Stack Overflow用户
提问于 2019-11-25 07:13:56
回答 3查看 5.1K关注 0票数 3
代码语言:javascript
复制
import io

string_out = io.StringIO()
string_out.write("hello")
print(string_out.getvalue())

string_out.write("new Hello")
print(string_out.getvalue())
代码语言:javascript
复制
OutPut1: hello 
OutPut2: hellonew Hello 

我怎样才能从流中刷新第一个输入,这样第二个流的输出就变成了新的Hello。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-25 07:28:17

您可以使用函子truncate()。它不会删除流,而是调整它的大小,所以给它赋值0应该可以去掉流中的所有字节。您还需要使用seek()来更改流的位置。与truncate()一样,给它一个0的值应该会抵消流开始时的位置。祝好运!

代码语言:javascript
复制
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)

票数 3
EN

Stack Overflow用户

发布于 2019-11-25 07:27:56

getvalue get是整个字符串,您可以通过查找和阅读来完成所需的操作:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-11-25 08:57:33

创建一个new StringIO而不是截断和seeking.When --您只需要通过这个thread,在Python3中,创建一个新的流而不是重用一个空白流-- 11%更快,而创建一个新的流而不是使用3KB数据的流要快5%。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59026837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档