-1

我试图完成的是每 5 秒读取一个 15MB 的文本文件,因为它是从另一个程序写入的。我能够做到这一点并逐行阅读。我遇到的问题是实际日志分为两行。第一个是时间戳,第二个是信息标志。

当我逐行阅读文本文件时,我正在寻找某些单词的列表,如果为真,我需要它从上面的行返回相应的时间戳。我现在使用的方法不起作用,因为它必须逐行搜索,然后在该循​​环中,如果它发现了一些重要的东西,它会再次搜索上面的行。然后我需要阅读时间戳的字符串,并从中生成一个日期时间对象。

这是文本的样子

Sep 1, 2013 8:58:05 AM LaunchingApplet
INFO: THIS IS A FLAG MESSAGE
4

2 回答 2

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()
于 2013-09-18T04:28:20.730 回答
0

因为文件是可迭代的,

with open("input.txt","r") as f:
    for line in f:
        if "INFO: THIS IS A FLAG MESSAGE" in f.next(): print line

也会为你工作

于 2013-09-18T04:44:18.117 回答