首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中使用StringIO的read()获取数据失败

在python中使用StringIO的read()获取数据失败
EN

Stack Overflow用户
提问于 2012-04-22 13:55:03
回答 2查看 23.5K关注 0票数 77

使用Python2.7版本。下面是我的示例代码。

代码语言:javascript
复制
import StringIO
import sys

buff = StringIO.StringIO()
buff.write("hello")
print buff.read()

在上面的程序中,read()什么也不返回,而as getvalue()返回"hello“。有人能帮我解决这个问题吗?我需要read(),因为下面的代码涉及读取"n“个字节。

EN

回答 2

Stack Overflow用户

发布于 2012-04-22 14:00:36

您需要将缓冲区位置重置到开头。您可以通过执行buff.seek(0)来做到这一点。

每次读取或写入缓冲区时,位置都会前进一位。假设你从一个空的缓冲区开始。

缓冲器值为"",缓冲器pos为0。你做buff.write("hello")。显然,buffer的值现在是hello。但是,缓冲区位置现在是5。当您调用read()时,除了位置5之外没有要读取的内容!所以它返回一个空字符串。

票数 105
EN

Stack Overflow用户

发布于 2015-07-29 07:55:53

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

代码语言:javascript
复制
In [5]: out = StringIO.StringIO()

In [6]: out.write('use write')

In [8]: out.seek(0)

In [9]: out.read()
Out[9]: 'use write'
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10265593

复制
相关文章

相似问题

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