首页 > 解决方案 > 使用 Python 观察“成功”或“失败”字符串的日志

问题描述

我正在尝试做我以前在 Python 中使用 Bash 的所有事情,以便最终学习这门语言。但是,这个问题让我很困惑,我无法找到任何适合我用例的解决方案。

不过,在我可以走路之前有一种尝试跑步的元素,所以我正在寻找一些方向。

这是问题:

我有一个 Python 脚本,它启动一个单独的程序,该程序创建并写入日志文件。

我想查看该日志文件,如果脚本在日志中检测到“Success”字符串,则打印“Successful Run”,如果找到“Failed”字符串,则打印“Failed Run”。底层进程通常需要大约 10 秒才能到达将“成功”或“失败”写入日志文件的阶段。两个字符串都不会同时出现在日志中。要么成功,要么失败。不可能两者兼而有之。

我一直在尝试用一个while循环来做到这一点。所以我可以继续看日志文件,直到字符串出现,然后退出。我只为一个字符串工作,但我不确定如何容纳另一个字符串。

这是我正在运行的代码。

log_path = "test.log"
success = "Success"
failure = "Failed"

with open(log_path) as log:
    while success != True:
        if success in log.read():
            print("Process Successfully Completed")
            sys.exit()

标签: pythonpython-3.x

解决方案


多亏了 alaniwi 和 David 的上述指示,我实际上已经设法使用以下代码使其工作。所以我本来应该很接近。

我已经将它全部包装在一个 中while True,将其log.read()放入一个变量中,然后添加一个elif. 绝对对任何关于这是否是最 Pythonic 方式的指示感兴趣?所以如果需要请批评。

    while True:
        with open(log_path) as log:

            read_log = log.read()

            if success in read_log:
                print("Process Successfully Completed")
                sys.exit()

            elif fail in read_log:
                print("Failed")
                sys.exit()

推荐阅读