在一行文本文件中设置当前位置

时间:2013-09-09 06:49:59

标签: python python-2.7 python-3.x

我想在一行文本文件中设置当前位置。

示例:

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

Textfile:

  1. Line:qwe qwe
  2. 行:x
  3. Line:qwer
  4. 专线:qwefgdg
  5. 如果我找到那个词,fobj的当前位置应该回到一行。 (在示例中,我在2. Line中找到单词,因此位置应设置为1. Line的开头)

    我尝试使用fseek。但我不是那么成功。

2 个答案:

答案 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

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