无法获取有关在python中使用StringIO的read()的数据

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

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

在上面的程序中,read()没有返回任何值,因为getvalue()返回给我“hello”。 任何人都可以帮我解决这个问题吗? 我需要read(),因为我的下面的代码涉及读取“n”个字节。

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

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

缓冲区值是"" ,缓冲区pos是0 。 你做buff.write("hello") 。 显然缓冲区值现在是hello 。 现在缓冲区的位置是5 。 当你打电话给read() ,没有任何过去的位置5可以阅读! 所以它返回一个空string。

 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' 

要么

 In [5]: out = StringIO.StringIO() In [6]: out.write('use write') In [8]: out.seek(0) In [9]: out.read() Out[9]: 'use write'