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 07:38:19 浏览: 151
这个问题可能是因为 `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` 运行成功后,子进程会立即退出,主进程也会继续执行并判断子进程的返回值。
相关问题
while True : ret = os.system("python3 /home/pi/Documents/8-17/simplest.py") if ret == 0: # simplest.py 运行成功,退出循环 print("simplest运行正常.....") break程序不会运行if判断
你可以在运行 `os.system()` 命令的时候将返回值存储在变量中,然后再进行判断。例如:
```
while True:
ret = os.system("python3 /home/pi/Documents/8-17/simplest.py")
if ret == 0:
print("simplest运行正常.....")
break
```
这样,如果 `simplest.py` 运行成功,`os.system()` 命令会返回 0,然后程序就会执行 `if` 语句块中的代码。如果 `simplest.py` 运行失败,`os.system()` 命令会返回非零值,程序就会继续执行 `while` 循环,直到 `simplest.py` 运行成功为止。
if chinanet is False: print("疑似存在网络异常") getNet() else: print("网络正常") while True: ret = os.system("python3 /home/pi/Documents/8-17/simplest.py") if ret == 0: # simplest.py 运行成功,退出循环 break else: # simplest.py 运行失败,判断是否是网络中断导致的 chinanet = isNetChainOK() if chinanet is False: print("simplest.py 运行失败,且网络异常,尝试重新连接网络") getNet() else: print("simplest.py 运行失败,重新启动 simplest.py")
这段代码是一个 Python 脚本,大概的意思是:
如果网络状态为异常,则重新连接网络;否则输出网络正常。
然后进入一个无限循环,不断执行 simplest.py 脚本。如果 simplest.py 执行成功,则退出循环;否则判断是否是网络中断导致的。如果网络异常,则尝试重新连接网络;否则重新启动 simplest.py 脚本。
其中 isNetChainOK() 函数应该是用来检测网络是否正常的,但是这里的具体实现并没有给出,需要自己补充。
阅读全文