我试图完成的是从另一个程序写入时,每5秒读取一个15MB的文本文件。我能够完成它并逐行阅读。我遇到的问题是实际日志分为两行。第一个是时间戳,第二个是Info标志。
当我逐行阅读文本文件时,我正在查找某些单词的列表,如果为true,我需要它从上面的行返回相应的时间戳。我现在正在使用的方法不起作用,因为它必须逐行搜索,然后在该循环内如果它发现了重要的东西,它再次搜索上面的行...那么我将需要阅读时间戳的字符串,并从中生成一个日期时间对象。
这是文本的样子
Sep 1, 2013 8:58:05 AM LaunchingApplet
INFO: THIS IS A FLAG MESSAGE
答案 0 :(得分:2)
您可以将上一行存储在变量中:
the_file = open('test.txt','r')
prev = None
for line in the_file:
if line.strip()== 'INFO: THIS IS A FLAG MESSAGE':
tokens = prev.split(' ')
date_str = ' '.join(tokens[0:5])
message = tokens[5:]
the_date = datetime.strptime(date_str,'%b %d, %Y %I:%M:%S %p')
print the_date, message
prev = line.strip()
答案 1 :(得分:0)
作为文件可迭代,
with open("input.txt","r") as f:
for line in f:
if "INFO: THIS IS A FLAG MESSAGE" in f.next(): print line
也适合你