0

我想将文本文件中的当前位置设置回一行。

例子:

我在文本文件中搜索单词“x”。

文本文件:

  1. 线路:qwe qwe
  2. 行:x
  3. 线路:qwer
  4. 线路:qwefgdg

如果我找到那个词,则 fobj 的当前位置应后移一行。(在示例中,我在 2. Line 中找到了单词,因此位置应设置为 1. Line 的开头)

我尝试使用 fseek。但我并没有那么成功。

4

2 回答 2

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方法与迭代不能很好地融合,因此请重新打开文件以确保安全。

于 2013-09-09T07:33:18.667 回答
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

小心,因为这将创建一个永远的循环。确保输入退出条件以终止循环。

于 2013-09-09T07:08:06.720 回答