我什么时候应该使用Popen(),什么时候应该使用call()?

Jos*_*sen 1 python subprocess call popen

警告:Python的新手.

想听听实际使用它的专业人士:

之间有什么主要区别subprocess.Popen()subprocess.call(),当是最好使用每一个?

除非你想知道为什么我在考虑这个问题或者你的答案集中在哪里,否则你现在可能会停止阅读.

我被激发去问这个问题,因为我正在处理我开始使用的脚本中的问题subprocess.Popen(),最终称为系统暂停,然后想要删除创建系统暂停的.exe,但我注意到Popen(),所有命令似乎一起运行(.exe上的删除在exe关闭之前执行..),虽然我尝试添加communicate().

这是我上面描述的假代码:

subprocess.Popen(r'type pause.exe > c:\worker.exe', shell=True).communicate()
subprocess.Popen(r'c:\worker.exe', shell=True).communicate()
subprocess.Popen(r'del c:\worker.exe', shell=True).communicate()
Run Code Online (Sandbox Code Playgroud)

S.L*_*ott 7

subprocess.call(*popenargs,**kwargs)运行带参数的命令.等待命令完成,然后返回returncode属性.

如果您创建了一个Popen对象,则必须sp.wait()自己调用.

如果您使用call,那就是为您完成的.