while True : ret = os.system("python3 /home/pi/Documents/8-17/simplest.py") if ret == 0: # simplest.py 运行成功,退出循环 print("simplest运行正常.....") break simplest运行成功后程序不会往下执行if判断
时间: 2023-12-10 17:38:19 浏览: 154
python基础while循环及if判断的实例讲解
这个问题可能是因为 `os.system()` 函数在运行子进程时会阻塞主进程,直到子进程执行完毕才会继续执行主进程。因此,如果 `simplest.py` 运行成功后,主进程会一直等待子进程返回结果,而不会执行 `if` 判断语句。
为了解决这个问题,可以使用 `subprocess` 模块中的 `Popen()` 函数来异步执行子进程,这样主进程就不会被阻塞了。代码示例如下:
```
import subprocess
while True:
proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"])
proc.wait() # 等待子进程执行完毕
if proc.returncode == 0:
print("simplest运行正常.....")
break
```
这样,当 `simplest.py` 运行成功后,子进程会立即退出,主进程也会继续执行并判断子进程的返回值。
阅读全文