当前位置: 代码迷 >> 综合 >> python满足某个条件后重新启动程序 os.execl() os.system()
  详细解决方案

python满足某个条件后重新启动程序 os.execl() os.system()

热度:80   发布时间:2023-11-24 23:57:11.0

python满足某个条件后重新启动程序

import sys
import os
print("一串aaaaaaaaaaaaa")
num=int(input("请输入:"))if num<10:print("restart...")os.execl(sys.executable,sys.executable,*sys.argv)
else:print("main")

运行效果图

在这里插入图片描述

好像并没有跟我要的想法一致哦,好尴尬。

可以看到运行后,我输入4,是满足条件的,但只打印了 restart… 这串烤串,并没有重新启动程序。
接着就 Process finished with exit code 0 结束了,
该问题尚未解决,如果有知道怎么解决的大佬,烦请告知一下,不甚感谢。

该运行结果是windows平台下的PyCharm编辑器中

python解释器:3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12)

但是在cmd命令窗口中好像又可以,如下图:

在这里插入图片描述
从图中可以看到我第一次输入4时,它重新执行了,但是吧,你说它行吧,又不完全行,等我再次输入时,它说 xx 不是内部或外部命令等信息。

或者它是报如下图的错:

在这里插入图片描述
出现该 EOF when reading a line 报错,不知道是什么鬼了,难道 input() 失效了???
小朋友你是否有很多问号?????????????????????

但是吧,接着往下看…

虽然它不能重新启动当前脚本,但是它可以执行其他的脚本,如下例子:

首先我在桌面上新建一个abc.py文件,该文件的功能是打印9*9乘法表,代码如下图:
在这里插入图片描述

接着我在main.py文件中,满足某个条件后执行abc.py文件,如下:

import sys
import os
print("一串aaaaaaaaaaaaa")
num=input("请输入:")
if int(num)<10:print("run other .py file...")os.execl(sys.executable, sys.executable, "C:/Users/Administrator/Desktop/abc.py", 'i')
else:print("main")

接着就是测试了,
首先先在pycharm中测试先,测试效果如下图:
在这里插入图片描述
可以看到在pycharm中并没有什么效果。

接着在cmd命令窗口中测试了,测试结果如下图:
在这里插入图片描述
在cmd窗口中可以看到,我输入4后,它去执行了桌面的 abc.py 文件了,也打印出 9*9乘法表了。

说 os.execl()中的参数各代表是什么吧

os.execl(参1,参2,参3,参4,参…)

参1:要指定python的解释器:"x盘/xx/python.exe" ->也叫控制台(终端)应用程序
参2:随便给个字符串就行了,但不能是什么都没有的字符串->"",可以是空字符串->" "
参3:可以执行的py文件,可以指定该py文件的绝对路径加文件名加后缀名
参4:可选参数,随便给个字符串就行了
参...:可选参数,随便给个字符串就行了

我们测试一下吧:

我D盘/python36/装了python 3.6,如下图
在这里插入图片描述

main.py代码如下:

import sys
import os
print("一串aaaaaaaaaaaaa")
num=input("请输入:")
if int(num)<10:print("run desktop/abc.py file...")print("随便")os.execl("D:/python36/python.exe","随便", "C:/Users/Administrator/Desktop/abc.py", '随便')
else:print("main")

在这里插入图片描述

看如下行代码

os.execl(sys.executable,sys.executable,*sys.argv)

我们分别打印一下 sys.executable *sys.argv 各输出是什么吧,如下图:
在这里插入图片描述

sys.executable  # python的解释器文件
*sys.argv # 当前 .py 文件的绝对路径 + 文件名 + 后缀名

解决方案

然后我用 os.system() 试试行不行,居然给我试出来了。

import sys
import os
print("一串aaaaaaaaaaaaa")
num=input("请输入:")
if int(num)<10:print("restart main.py...")os.system("python main.py")
else:print("main")

在pycharm上测试如下图:
在这里插入图片描述
但是在cmd中测试有问题啊,结果如下图:
在这里插入图片描述
那这又是什么问题呢?那是因为下图这行代码在当前目录下找main.py的时候找不到,
在这里插入图片描述
所以要带上main.py的绝对路径,修改后如下代码:

import sys
import os
print("一串aaaaaaaaaaaaa")
num=input("请输入:")
if int(num)<10:print("restart main.py...")os.system("python D:/codepython/main.py")
else:print("main")

再次在cmd中运行,成功运行,如下图:
在这里插入图片描述
也可以运行其中路径下的py文件,比如再让它去执行桌面下的abc.py,打印9*9乘法表,如下:

import sys
import os
print("一串aaaaaaaaaaaaa")
num=input("请输入:")
if int(num)<10:print("run desktop/abc.py files...")os.system("python C:/Users/Administrator/Desktop/abc.py")
else:print("main")

pycharm测试:
在这里插入图片描述
cmd测试:
在这里插入图片描述


os.system()前提条件:pthon解释器已经添加到环境变量中了。看你安装python环境的时候有没有勾选 add path 选项了。就是如下图所示:
在这里插入图片描述

那没有勾选 addp path 选项怎么办?要么去配置一下环境变量,要么这样,如下图:
在这里插入图片描述

到此结束
---------------------分隔线-----------------------------

  相关解决方案