python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口
让我们首先分析两个发布的Python脚本行在执行Python脚本时真正做了些什么。感谢eryksun进行深入调查,真正使用Python导致正确的描述,现在可以在下面阅读。
os.system()导致在前台使用控制台窗口执行cmd.exe /C并停止执行Python脚本,直到Windows命令解释程序终止。如果Python脚本本身在控制台中执行,则启动的cmd.exe将继承此控制台。
此命令进程以start开始,内部命令为cmd.exe,另一个命令进程带有前台控制台窗口。很好,但是第二个命令进程在完成命令执行后立即终止。如果您希望在运行Python脚本时看到执行脚本或Python解释器本身输出错误,那就不太好了。
因此,第二个命令进程使用选项cmd.exe启动/k以继续运行此命令进程,继承由start创建的控制台,并在完成指定命令的执行后打开控制台窗口
第二个命令进程运行内部命令call,这完全没有必要,因为python是真实的python.exe,一个控制台应用程序而不是批处理文件。因此,根本不需要call。
建议始终使用完整的文件名指定应用程序和脚本,即文件名+文件扩展名,而不仅仅是文件名。如果已知并修复了可执行文件/脚本的路径,则也应指定它。这使得应用程序/脚本的执行独立于当前目录和环境变量PATHEXT和PATH。
Python解释器在第二个控制台中执行指定的Python脚本。
os.system()完成后,第一个命令进程在start完成后立即终止,这在cmd.exe /k开始python.exe并且command = 'start cmd.exe /K python.exe %s ^&^& exit' % (some_py_prog)
os.system(command)正在解释Python脚本时已经发生。
剩下的就是使用脚本运行Python解释器的第二个命令进程。即使在完成指定Python脚本的执行后Python解释器终止后,此命令进程仍会继续运行。
因此,一旦Python解释器完成Python脚本的执行,目标是终止第二个命令进程和控制台窗口,但前提是脚本执行时没有错误。
好吧,我根本没有安装Python,但我认为它在执行脚本时出现错误,返回代码大于0。否则,在成功执行脚本时退出代码为0。
因此可以使用这样的命令:
start cmd.exe /K
由python.exe开始的第二个命令进程执行的命令行现在包含两个命令:
Python解释器exit,脚本作为参数执行
和
内部命令0,只有当第一个命令的退出代码为&&时,由于操作符^,Windows命令解释程序才应执行第二个命令。
醇>
每个&符号必须使用Windows命令解释器的转义字符进行转义,该命令解释符是插入符号&&。这是必要的,否则start将被运行start的第一个命令进程解释,作为在成功执行Test.bat后运行的附加命令。
请注意,我没有安装Python,因此只需在命令提示符窗口中使用批处理文件@echo %~dp0 executed. & exit /B 1和单个命令行start cmd.exe /K call Test.bat ^&^& exit进行测试。
Test.bat
call是批处理文件,而不是需要使用命令Test.bat的可执行文件。没有特定窗口标题的启动命令进程保持打开状态,因为Test.bat退出并返回代码1.如果我在{{1}}命令行末尾修改数字1到0,则启动的命令进程退出。
当然,使用此解决方案时,脚本代码本身必须停止脚本代码检测到的错误的脚本执行。
python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口相关推荐
- python按键盘上哪个键运行_python按什么键运行
python按什么键运行? python按shift+F10键运行. Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...
- python按键盘上哪个键运行_python通过按下键盘特定按键,开始运行python文件
一.目的 通过按下键盘特定按键,开始运行python文件 二.code from pykeyboard import PyKeyboardEvent from pykeyboard import * ...
- python中的装饰器怎么运行_Python 装饰器入门(上)
翻译前想说的话: 这是一篇介绍python装饰器的文章,对比之前看到的类似介绍装饰器的文章,个人认为无人可出其右,文章由浅到深,由函数介绍到装饰器的高级应用,每个介绍必有例子说明.文章太长,看完原文后 ...
- python中的elif语句怎么运行_Python的elif语句怎么用
else和elif语句也可以叫做子句,因为它们不能独立使用,两者都是出现在if.for.while语句内部的.else子句可以增加一种选择:而elif 子句则是需要检查更多条件时会被使用,与if和el ...
- python按键盘上哪个键运行_python根据键盘输入进行相应操作
上篇文章介绍了如何利用pyhook模块监听鼠标键盘的事件,接下来如果需要通过监听的事件内容,来做对应的操作,需要对event的内容进行相应的判断. 如果仅仅通过event.key来进行判断,可以写成s ...
- Python计算代码之间运行时间(运行间隔时间、时长)
Python3.8以下使用time.clock() 通过代码统计 导入time库:import time 代码开始前获取开始时间:time_start = time.clock() 代码结束后获取结束 ...
- visual studio 2019工程运行时不要弹出cmd黑窗口
原因:VS工程属性配置问题,[连接器]->[系统]->[子系统]设置成了控制台 解决方案:[连接器]->[系统]->[子系统]修改为窗口
- Linux 登陆用户时启动 ssh-agent 并在退出时关闭
2019独角兽企业重金招聘Python工程师标准>>> 文/Fenying 使用 Git/SSH/SCP 之类操作的时候,一般都是用 ssh 密钥的,但是每次都要先启动 ssh-ag ...
- python飞机大战源码素材包_python(pygame)滑稽大战(类似飞机大战) 教程
成品已录制视频投稿B站(本文目前实现了基础的游戏功能),点击观看 本帖曾在百度贴吧直播,但由于人气低反响差已停更. 项目稽忽悠不(github)地址(目前只上传了素材,代码还在整理中): https: ...
最新文章
- 阿里二面:为什么要分库分表?
- 修改文件默认打开方式
- 磁头号和起始扇区的计算方法------软盘结构
- Redis操作key相关API
- 工作252:uniapp--实战--uview---tabber
- 优秀Java程序员的编程风格
- 敏捷开发总结(2)开发过程活动
- 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结【依赖库源码包】
- 系统发育树的构建方法介绍及数据问题等(古生物形态学数据)
- 【BZOJ5394】【Ynoi2016】—炸脖龙(树状数组+广义欧拉定理)
- php设计模式番外篇--超人的诞生
- Cadence OrCAD Capture 查找功能详细介绍
- 安卓中为了获取context的方法和区别(getContext,getActivity,this,mainActivity.this等)
- golang学习笔记之string转换
- 课程linux实验报告,Linux课程综合训练实验报告
- 基于WebGL架构的3D可视化平台—城市地下管线3D可视化
- 女人身体8大隐私部位长得越丑健康指数越高_113
- kbengine 源代码读
- 淘宝,京东老喜欢降价售卖,瞬间感觉亏大了。这款报价脚本你值得拥有。
- u3d游戏开发视频潭州_Unity MMORPG游戏开发教程(一)——初识Unity
热门文章
- 宝塔需在php设置中安装redis扩展,wordpress开启Redis扩展教程
- python hbase_Python操作Hbase
- 导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?
- mysql的常用的备份工具_39、mysql常用备份工具
- 数字图像处理之图像边缘
- win10安装部署网络测试工具 NetCat 用于Spark跑测试
- matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错
- 找不到php的版本,php – 在任何版本中都找不到请求的包…
- Python 如何创建多维的list
- POJ 3267为什么优先队列超时,DP就能过,难过