Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在Python中解析文本文件并捕获上面的行_Python_File_Parsing_Datetime_Text - Fatal编程技术网

试图在Python中解析文本文件并捕获上面的行

试图在Python中解析文本文件并捕获上面的行,python,file,parsing,datetime,text,Python,File,Parsing,Datetime,Text,我试图做到的是,当从另一个程序写入一个15MB的文本文件时,每隔5秒读取一个15MB的文本文件。我能够做到这一点,并逐行阅读。我遇到的一个问题是,实际日志分为两行。第一个是时间戳,第二个是信息标志 当我逐行阅读文本文件时,我正在寻找特定单词的列表,如果为true,我需要它从上面的行返回相应的时间戳。我现在使用的方法不起作用,因为它必须逐行搜索,然后在该循环中,如果它发现了重要的内容,它将再次搜索上面的行。。然后我需要读取时间戳的字符串,并从中生成datetime对象 下面是文本的样子 Sep 1

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

当我逐行阅读文本文件时,我正在寻找特定单词的列表,如果为true,我需要它从上面的行返回相应的时间戳。我现在使用的方法不起作用,因为它必须逐行搜索,然后在该循环中,如果它发现了重要的内容,它将再次搜索上面的行。。然后我需要读取时间戳的字符串,并从中生成datetime对象

下面是文本的样子

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()==…会更好。我认为这是故意的——输入设置为成对的行,第一行是日期戳,第二行是状态行。如果不是这样的话,那么这终究不会适用于这个案例。