[英]How to get the output of a Python subprocess and terminate it afterwards?
[英]How to use subprocess in Python to terminate a file
我使用子进程打开一个excel文件,但无法将其杀死。
import subprocess
p = subprocess.Popen([r"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE", 'data.xlsx'])
p.wait()
p.kill()
excel文件仍然存在。 我在任务管理器中搜索了p.pid,但找不到该进程。 我该怎么办?
在对标准python库进行了一些研究并四处搜寻之后,我发现了以下解决方案:
from subprocess import Popen
p = Popen([r"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE", 'data.xlsx'], shell=True)
if p.poll() is None:
Popen("taskkill /F /IM EXCEL.EXE",shell=True)
我在这里找到了第二部分: 使用CMD关闭Excel
我使用shell = true以便在cmd shell窗口中完成命令。 p.poll()基本上询问程序是否已被杀死,并且还给excel文件打开时间。
在工作了一段时间之后,我会回答您的问题,但是基于我的经验,除非需要命令行,否则我始终会尝试避免使用标准的python库或坚固的外部库,因为子进程会因计时而变得非常复杂和输入/输出。 如果excel文件需要一段时间才能加载,则可能会遇到一个问题,即它试图在文件存在之前关闭文件。 所以在这里您可能要运行一个计时器。
还忘了提及以这种方式杀死任务将丢失文件中所有未保存的数据,就像我说的,时间安排似乎是一个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.