使用python读取文件中特定行的前一行

时间:2017-10-13 13:18:09

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

我想从特定文件中读取文件中的前一行。 例如,这是我的文件内容。

Line 1
Line 2
Line 3
Line 4
Line 5

我使用一些代码找到了一行“line 4”。现在从line 4开始,我想按照

的顺序阅读之前的所有行
Line 3
Line 2
Line 1

如何实现这个???

3 个答案:

答案 0 :(得分:2)

Python deque非常适合这样做:

from collections import deque

last_lines = deque(maxlen=3)

with open('input.txt') as f_input:
    for line in f_input:
        line = line.strip()

        if line == 'Line 4':
            print list(reversed(last_lines))
            break

        last_lines.append(line)

这将显示:

['Line 3', 'Line 2', 'Line 1']

它为您提供固定长度的队列。添加到其中的每个项目都会在添加maxlen个项目后删除最旧的项目。在您的情况下,这意味着您只能一次将3个项目存储在内存中。

同样的方法可以用nornal列表完成,但速度不快。

答案 1 :(得分:1)

您需要先加载文件然后将其打印出来

  with open(file_name, 'rb') as f:
    for line in f:
      if find_line_you_want_func(line):
        break
      res.append(line)
  for line in res[::-1]:
    print line

答案 2 :(得分:1)

很脏,但它不存储字符串列表:

p=0
with open("file") as fp:
    for i, line in enumerate(fp):
        if line==('Line 4'):
            p=i
for i in range(p,0):
    line = linecache.getline("file", i)