繁体   English   中英

如何在Python中使用子进程来终止文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM