在Python中顺序打开和关闭应用程序

3 投票
2 回答
12358 浏览
提问于 2025-04-18 04:38

我想要顺序地打开和关闭一个应用程序。但是问题是,应用程序虽然打开了,但我必须手动关闭它,才能进入下一行,也就是关闭该应用程序的那一行。

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

撰写回答