我想在一行文本文件中设置当前位置。
示例:
我在文本文件中搜索单词“x”。
Textfile:
如果我找到那个词,fobj的当前位置应该回到一行。 (在示例中,我在2. Line中找到单词,因此位置应设置为1. Line的开头)
我尝试使用fseek。但我不是那么成功。
答案 0 :(得分:2)
这不是你在Python中的表现。你应该迭代文件,测试当前行,从不担心文件指针。如果您需要检索上一行的内容,只需存储它。
>>> with open('text.txt') as f: print(f.read())
a
b
c
d
e
f
>>> needle = 'c\n'
>>> with open('test.txt') as myfile:
previous = None
position = 0
for line in myfile:
if line == needle:
print("Previous line is {}".format(repr(previous)))
break
position += len(line) if line else 0
previous = line
Previous line is 'b\n'
>>> position
4
如果您确实需要上一行的字节位置,请注意tell/seek
方法与迭代不能很好地融合,因此请重新打开文件以保证安全。
答案 1 :(得分:0)
f = open('filename').readlines()
i = 0
while True:
if i > range(len(f)-1):
break
if 'x' in f[i]:
i = i - 1
print f[i]
i += 1
要小心,因为这将创建一个永久的循环。确保输入循环的退出条件以终止。