使用Python

时间:2017-07-20 17:58:44

标签: python string python-2.7 loops

我有一个小程序,我试图通过它读取在文件位置生成的日志文件,如下面的

Error_Suspects = ['Error', 'ERROR', 'Failed', 'Failure']


def detect_suspects(file_path, word_list):
    with open(file_path) as LogFile:
        Summary = {word: [] for word in word_list}
        failure = ':'
        for num, line in enumerate(LogFile, start=1):
            for word in word_list:
                if word in line:
                    failure += '<li>' + line + '</li>'
    return failure


Result = detect_suspects(r'C:\scripts\Log.txt', Error_Suspects)

现在问题是这个问题很好,直到我只有一个文件。但现在文件是以一定的间隔生成的,时间戳如下所示。

enter image description here

我希望以这种方式修改上述程序,以便始终使用最新的时间戳检查文件。此外,我想循环此程序每5分钟运行一次以检查最新文件。如果新文件在5分钟内没有到达,则不应该读取旧文件(已经读过)

1 个答案:

答案 0 :(得分:1)

如果你在包含所有这些文件的目录中,可以使用os.path.getmtime获取最新文件。

您可以这样使用它:

import os
files = os.listdir('.')
latest_file = max(files, key=os.path.getmtime)

os.listdir返回当前目录中所有文件的列表。带密钥的max查找具有最新修改时间的文件,并将其返回。

要每5分钟遍历一次目录,您需要设置一个while循环:

import time
while True:
    Result = detect_suspects(r'C:\scripts\Log.txt', Error_Suspects)
    time.sleep(5 * 60) # 300 seconds or 5 minutes