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

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 选项怎么办?要么去配置一下环境变量,要么这样,如下图:
在这里插入图片描述

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

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值