从Stringio读取而无需重置位置



我具有以下测试代码:

with open('master.log') as f:
    print(f.read(8))
    print(f.read(8))

这是:

>> pi@raspberrypi:~/workspace/Program $ sudo python test.py
>> 12/29/20
>> 17 12:52

您可以看到这有不同的印刷品。但是,当我这样做时:

import cStringIO
stream= "1234567890"
print(cStringIO.StringIO(stream).read(8))
print(cStringIO.StringIO(stream).read(8))

运行此操作时,我将获得以下输出:

>> pi@raspberrypi:~/workspace/Program $ sudo python test.py
>> 12345678
>> 12345678

在这种情况下,它输出相同的值(寻求者不会提前)。

我需要使其cstringio(或类似的解决方案)以与文件相同的方式读取字符串。我的意思是不重置每个读取的位置。

as @michael butscher和其他人已经避免了,您需要制作流的实例。

>>> #import io                                      # python 3
>>> import cStringIO as io                          # python 2 
>>> stream = "1234567890"
>>> f = io.StringIO(stream)
>>> f.read(8)
'12345678'
>>> f.read(8)
'90'

您两次构造StringIO对象,该对象等于两次打开同一文件。将对象分配给f并两次致电f.read()

最新更新