试图在Python中解析文本文件并捕获上面的行
我试图做到的是,当从另一个程序写入一个15MB的文本文件时,每隔5秒读取一个15MB的文本文件。我能够做到这一点,并逐行阅读。我遇到的一个问题是,实际日志分为两行。第一个是时间戳,第二个是信息标志 当我逐行阅读文本文件时,我正在寻找特定单词的列表,如果为true,我需要它从上面的行返回相应的时间戳。我现在使用的方法不起作用,因为它必须逐行搜索,然后在该循环中,如果它发现了重要的内容,它将再次搜索上面的行。。然后我需要读取时间戳的字符串,并从中生成datetime对象 下面是文本的样子试图在Python中解析文本文件并捕获上面的行,python,file,parsing,datetime,text,Python,File,Parsing,Datetime,Text,我试图做到的是,当从另一个程序写入一个15MB的文本文件时,每隔5秒读取一个15MB的文本文件。我能够做到这一点,并逐行阅读。我遇到的一个问题是,实际日志分为两行。第一个是时间戳,第二个是信息标志 当我逐行阅读文本文件时,我正在寻找特定单词的列表,如果为true,我需要它从上面的行返回相应的时间戳。我现在使用的方法不起作用,因为它必须逐行搜索,然后在该循环中,如果它发现了重要的内容,它将再次搜索上面的行。。然后我需要读取时间戳的字符串,并从中生成datetime对象 下面是文本的样子 Sep 1
Sep 1, 2013 8:58:05 AM LaunchingApplet
INFO: THIS IS A FLAG MESSAGE
可以将前一行存储在变量中:
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()
由于文件是可编辑的
with open("input.txt","r") as f:
for line in f:
if "INFO: THIS IS A FLAG MESSAGE" in f.next(): print line
我想如果line.strip()==…会更好。我认为这是故意的——输入设置为成对的行,第一行是日期戳,第二行是状态行。如果不是这样的话,那么这终究不会适用于这个案例。