用cmd打开python有warning_我可以关闭在Python中用subprocess.Popen打开的CMD窗口吗?

我有一个程序,需要在新的CMD中运行小任务.

例如:

def main()

some code

...

proc = subprocess.Popen("start.bat")

some code...

proc.kill()

子进程,Popen打开一个新的cmd窗口并在其中运行“ start.bat”.

proc.kill()终止进程,但不关闭cmd窗口.

有没有办法关闭此cmd窗口?

我考虑过命名打开的cmd窗口,以便可以使用以下命令将其杀死:

/taskkill /f /im cmdName.exe

如果没有,您有什么建议吗?

编辑,添加了最小,完整和可验证的示例:

a.py:

import subprocess,time

proc = subprocess.Popen("c.bat",creationflags=subprocess.CREATE_NEW_CONSOLE)

time.sleep(5)

proc.kill()

b.py

while True:

print("IN")

蝙蝠

python b.py

解决方法:

这是子进程运行时所期望的.您只是在杀死.bat进程.

您可以使用psutil(第三方,使用pip install psutil进行安装)来计运算符进程&杀死他们,就像这样:

import subprocess,time,psutil

proc = subprocess.Popen("c.bat",creationflags=subprocess.CREATE_NEW_CONSOLE)

time.sleep(5)

pobj = psutil.Process(proc.pid)

# list children & kill them

for c in pobj.children(recursive=True):

c.kill()

pobj.kill()

用您的示例进行测试,该窗口在5秒钟后关闭

标签:cmd,subprocess,python

来源: https://codeday.me/bug/20191110/2014634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值