python - 如何终止由 Python subprocess.Popen() 创建的进程

标签 python subprocess

我需要从Python调用一个DOS .exe文件,并在计算后删除这个.exe。我可以使用 subprocess.Popenos.system 调用它,但是,如果它是由 subprocess.Popen 调用的,我无法删除此 .exe 文件。错误为 WindowsError:[错误 5] 访问被拒绝。谁能告诉我如何终止这个进程? 谢谢!

subprocess 方法(不起作用):

a = subprocess.Popen("dos.exe", stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(5)
a.kill()
os.remove("dos.exe")

# gets error msg "WindowsError: [Error 5] Access is denied"

os.system 方法(有效):

a=os.system("dos.exe")
os.remove("dos.exe")

最佳答案

您需要等待该过程完成才能删除 .exe。在删除 .exe 之前调用 a.communicate() 或 a.wait()

关于python - 如何终止由 Python subprocess.Popen() 创建的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390861/

相关文章:

python - 尽管进程已死,为什么我会收到子进程资源警告?

python - 在 Python 3.4 中调用子进程并在命令无效时处理错误?

python - SBCL 运行 Shell 命令

python sterling的近似程序

python - 为什么这个 opencl 代码是不确定的?

python - 为什么 pytesseract 抛出 WinError 6?

python - 如果没有 Decimal 模块, float 中是否可以有超过 15 位十进制数字?

python - 通常只切片列表/元组的一个元素?

python - 如何从 subprocess.Popen 使用 STDIN

python - 复制 Python 子进程的终端输出