我想从特定文件中读取文件中的前一行。 例如,这是我的文件内容。
Line 1
Line 2
Line 3
Line 4
Line 5
我使用一些代码找到了一行“line 4
”。现在从line 4
开始,我想按照
Line 3
Line 2
Line 1
如何实现这个???
答案 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)