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)正在解释Py​​thon脚本时已经发生。

剩下的就是使用脚本运行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,则启动的命令进程退出。

当然,使用此解决方案时,脚本代码本身必须停止脚本代码检测到的错误的脚本执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java一年包装_java回顾之包装类

Java包装类由于基本类型比如int,char不具有支持面向对象的编程机制,比如所有引用类型的变量都继承与Object,都可以当成Object使用,如果有个方法需要Object类型的参数,但是实际需要的值却是2,3等数值,这就比较难处理所以…

python3 sleep 并发_python异步编程之asyncio(百万并发)

点击上方蓝字关注我们目录[python 异步编程之 asyncio(百万并发)]一、asyncio二、aiohttp前言:python 由于 GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病。然而在 IO 密集型的网络编程里,异步处理比同步处理能提升成…

【Spring实战】02 配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍,我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中,…

java getxxx_java的invoke与getMethod方法用法

和listener一起使用举例:需要在控件中监听某个动作:比如button点击,画面滚动等1.为控件定义一个属性:属性绑定一个方法xxxProperty "onPropertyXxxxFunc”2.首先自定义一个Listener// 在控件构造函数中获得控件属性的值xxxPr…

windows查看usb信息命令_【VPS】Linux VPS查看系统信息命令大全

本文转自老左笔记,自用mark系统# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加…

c++ 向量的值逆序输出_C++中vector的常用方法

前言在C中,vector是一个商业转载请联系作者获得授权,非商业转载请注明出处。十分有用的容器。它能像容器一样存放各种类型的对象,简单来说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。相较链表而言&…

java生成密码_java生成密码生成 | 学步园

一、根据当前日期生成MD5加密密码package com.test;import java.security.MessageDigest;import java.text.SimpleDateFormat;import java.util.Date;public class Md5Test {public void toMD5(String plainText) {try {//生成实现指定摘要原文链接:http://www.cnbl…

python怎么创建一个二维数组_python 创建二维数组的方法

废话不多说,直接上代码:#codingutf-8def two_di_demo1():a[]for i in range(10):a.append([])for j in range(10):a[i].append(0)print(a)def two_di_demo2():a[]for i in range(10):a.append([])for j in range(10):a[i].append(0)print(a)b [[0] * 10…

java导出excel到本地_POI导出Excel----导出到客户端(本地)

contentType"application/vnd.ms-excel;charsetutf-8"pageEncoding"utf-8"%>//导入要用的包import"org.apache.poi.hssf.usermodel.HSSFWorkbook"%>import"java.io.FileOutputStream"%>import"org.apache.poi.hssf.user…

无法初始化sftp协议。主机是sftp服务器吗?_WinSCP v5.15.3 免费的 开源图形化 SFTP 客户端...

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。主要功能WinSCP 可以执行所有基本的文件操作,例如下载和上传。同时允许为文件和目录重…

java中组合_java中组合模式详解和使用方法

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创…

道客巴巴vip账号共享2020_腾讯视频VIP怎么两个手机通用?

理论上来说,腾讯视频VIP可以同时在3个设备上登录,但只能在2个设备上同时播放视频。这也就意味着,腾讯视频VIP可以在两个手机上同时使用。腾讯视频VIP基本可以分为微信区、QQ区,两者并不互通。近期腾讯视频手机端修改了登录规则&am…

python3示例_Python3 实例(七)

原标题:Python3 实例(七)Python 将字符串的时间转换为时间戳给定一个字符串的时间,将其转换为时间戳。实例import timea1 "2019-5-10 23:40:00"# 先转换为时间数组timeArray time.strptime(a1, "%Y-%m-%d %H:%M:%S")# 转换为时间戳…

java基础知识一_Java基础知识(一)

类与对象1.对象:客观存在的一切事物称之为对象类:具有相同属性和方法的对象的集合2.类:属性,方法3.修饰符:  public    protected               默认(不写)           private任何地…

python生成相似句子_4种方法计算句子相似度

Edit Distance计算两个字符串之间,由一个转成另一个所需要的最少编辑次数,次数越多,距离越大,也就越不相关。比如,“xiaoming”和“xiamin”,两者的转换需要两步:去除‘o’去除‘g’所以&#x…

mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!

一:我的mysql 5.7.15 ,系统是centos6.5主从复制配置步骤:瞅清楚!配置不要出错!!二:遇到的问题Got fatal error 1236 from master when reading data from binary log解决方案:在ma…

pythontcp文件传输_python socket实现文件传输(防粘包)

1.文件传输的要点:采用iterator(迭代器对象)迭代读取,提高读取以及存取效率;通过for line in file_handles逐行conn.send();2.socket粘包问题:[出现原因]:A.TCP协议为了提高传输效率,发送方往往需要收集定量…

python分析txt文件_python解析文本文件

python解析的文件原始数据:汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇…

python中hist函数参数_用hist参数解释Python,python,解读

python用hist参数解读python 中绘制hist的方法有很多,我经常用的是matplotlib直接用x,y绘制;Dataframe直接.hist绘制;绘制直方图1.bins为80的图形fig plt.figure(figsize(15, 9))for i in range(12):plt.subplot(3,4,i1) # 3行4列 位置是i1的…

java 字符串是对象吗_解析Java中的String对象的数据类型

解析Java中的String对象的数据类型2007-06-06eNet&Ciweek1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. …