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 选项怎么办?要么去配置一下环境变量,要么这样,如下图:
到此结束
---------------------分隔线-----------------------------