python - 使用 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()
解决方案
多亏了 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()
推荐阅读
- python - 沿最后一个轴的 3D numpy 数组中最常见和第二常见的值
- mysql - 如何从列中删除/替换像 %[%]% 这样的表达式匹配的子字符串
- mongodb - MongoDB:日志轮换似乎在 Ubuntu 18.04 中不起作用
- python - Selenium 跳过 javascript 弹出点击
- css - 将 traingle 放在垫子菜单的顶部
- spring - Elasticsearch 中搜索最多的词
- swift - 如何在 ZStack 中创建多个转换?
- kubernetes - AWS EKS ReadWriteMany QlikSense 安装
- java - Quarkus 没有对 Panache 的严重依赖?
- mysql - Sql - 分组表