我有一个简单的python文件:f = open('example.txt, 'r')
。
如何在不更新光标的情况下读取它:
示例:f contents '1234'
。
给出以下脚本:
print f.read(1)
print f.read(1)
它将打印:12
。如何使它打印11
?
答案 0 :(得分:2)
您可以使用f.seek(0)
。
演示:
>>> from io import StringIO
>>> s = StringIO('1234')
>>> s.read(1)
>>> '1'
>>> s.seek(0)
>>> 0
>>> s.read(1)
>>> '1'
如果我只想重置某些读物,该怎么办?
我不确定您要问什么。
您可以使用s.tell()
获取当前位置,因此s.seek(s.tell() - 1)
可以这么说,“重置一个read(1)
”。
>>> s = StringIO('1234')
>>> s.read(1)
>>> '1'
>>> s.read(1)
>>> '2'
>>> s.read(1)
>>> '3'
>>> s.seek(s.tell() - 1)
>>> 2
>>> s.read(1)
>>> '3'
我想要读取一个函数(文件,计数,modify_cursor = False)
>>> s = StringIO('abcdefghijk')
>>>
>>> def read(file, count, modify_cursor=False):
...: here = file.tell()
...: content = file.read(count)
...: if not modify_cursor:
...: file.seek(here)
...: return content
...:
>>> read(s, 3)
>>> 'abc'
>>> read(s, 3)
>>> 'abc'
>>> read(s, 3, modify_cursor=True)
>>> 'abc'
>>> read(s, 1)
>>> 'd'
>>> read(s, 1000)
>>> 'defghijk'
>>> read(s, 1)
>>> 'd'
答案 1 :(得分:1)
你可以
from io import StringIO
s = StringIO('read me out')
s.read(5)
# → 'read '
savedpos = s.tell()
s.read(2)
# → 'me'
s.seek(savedpos)
随时保存当前位置,然后根据需要将其恢复。
要明确显示在seek()
上,在二进制文件流的二进制模式下,定义范围内的所有值均被允许,而在文本模式下,仅允许0和前一个tell()
返回的任何值允许通话。