我想将文本文件中的当前位置设置回一行。
例子:
我在文本文件中搜索单词“x”。
文本文件:
- 线路:qwe qwe
- 行:x
- 线路:qwer
- 线路:qwefgdg
如果我找到那个词,则 fobj 的当前位置应后移一行。(在示例中,我在 2. Line 中找到了单词,因此位置应设置为 1. Line 的开头)
我尝试使用 fseek。但我并没有那么成功。
我想将文本文件中的当前位置设置回一行。
例子:
我在文本文件中搜索单词“x”。
文本文件:
如果我找到那个词,则 fobj 的当前位置应后移一行。(在示例中,我在 2. Line 中找到了单词,因此位置应设置为 1. Line 的开头)
我尝试使用 fseek。但我并没有那么成功。
这不是你在 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
方法与迭代不能很好地融合,因此请重新打开文件以确保安全。
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
小心,因为这将创建一个永远的循环。确保输入退出条件以终止循环。