在Python中顺序打开和关闭应用程序
我想要顺序地打开和关闭一个应用程序。但是问题是,应用程序虽然打开了,但我必须手动关闭它,才能进入下一行,也就是关闭该应用程序的那一行。
import os
os.system("scad3 file.txt")
os.system("TASKKILL /PID scad3.exe /T")
scad3是我想要运行的应用程序,但为了进入下一行,也就是结束任务的那一行,我必须手动关闭这个窗口。请问有没有什么办法可以解决这个问题呢?
非常感谢!
2 个回答
2
你可以试着用popen来执行命令,然后等一段时间,如果结果还没出来,就可以选择结束这个子进程。
import subprocess
def get_array_from_cmd_str(cmd_str):
cmd_str_parts = cmd_str.split(" ")
return [cmd_part for cmd_part in cmd_str_parts]
def run_command_str(command):
p = subprocess.Popen(get_array_from_cmd_str(command),
stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate()[0]
resp = {'out': p[0],
'err': p[1]}
return resp
要运行一个命令,可以用上面提到的“run_command_str”函数,方法如下:
import time
cmd = "scad3 file.txt"
cmd_out = run_command_str(cmd)
expected_execution_time = 5
time.sleep(expected_execution_time)
if cmd_out['err'] != '':
pass # handle error here
如果你的程序没有自动关闭,你可以按照这个帖子
中描述的方法手动结束它。(示例在Windows上没有测试过)
编辑:根据有价值的评论修改了代码。这个示例是一个阻塞调用,没有解决问题;请使用其他方法。
5
我想os.system是一个阻塞调用。可以试试在Python中使用Popen对象:
import subprocess
p = subprocess.Popen("notepad.exe")
p.terminate()
参考链接:https://docs.python.org/2/library/subprocess.html#popen-objects