警告: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()
答案 0 :(得分:7)
subprocess.call(* popenargs,** kwargs) 使用参数运行命令。等待 命令完成,然后返回 returncode属性。
如果您创建了Popen
对象,则必须自己调用sp.wait()
。
如果您使用call
,那就是为您完成的。