import os
import time
import subprocess
target_file = 'pt'
search_directory = './.flag'
while True:
for root, dirs, files in os.walk(search_directory):
if target_file in files:
print(f"找到文件 {target_file},执行命令。")
try:
subprocess.run(['make', 'pt'], check=True)
except subprocess.CalledProcessError as e:
print(f"执行命令时出错:{e}")
break
else:
print(f"未找到文件 {target_file},等待10分钟后再检查。")
time.sleep(600)
continue
break
解释上面代码:
1.subprocess 模块:允许你创建新的进程,连接到它们的输入 / 输出 / 错误管道,并获取它们的返回码。在这个脚本中,我们使用它来执行 make pt 命令。
2.os.walk(search_directory):这是一个生成器函数,它会递归地遍历指定目录及其子目录。root 是当前正在遍历的目录路径,dirs 是当前目录下的子目录列表,files 是当前目录下的文件列表。
3.try 语句块用于包裹可能会抛出异常的代码,except 语句块用于捕获并处理特定类型的异常,这样可以让程序更加健壮和可靠。
4.subprocess.run(['make', 'pt'], check=True):使用 subprocess.run() 函数执行 make pt 命令。check=True 参数表示如果命令执行失败(返回非零退出码),会抛出subprocess.CalledProcessError 异常。
except subprocess.CalledProcessError as e:捕获命令执行失败时抛出的异常,并打印错误信息。
注:新增知识:若需在pt_shell执行TCL脚本,则可在控制台上写“pt_shell -file aaa.tcl”,可一步到位。