如何杀死Python subprocess.Popen()创建的进程

时间:2012-04-30 21:31:06

标签: python subprocess

我需要从Python调用DOS .exe文件并在计算后删除此.exe文件。我可以使用subprocess.Popenos.system来调用它,但是,如果由subprocess.Popen调用,则无法删除此.exe文件。错误是WindowsError: [Error 5] Access is denied。任何人都可以让我知道如何杀死这个过程? 谢谢!

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")

1 个答案:

答案 0 :(得分:2)

在删除.exe之前,您需要等待该过程完成。在删除.exe

之前调用a.communicate()或a.wait()