我是subprocess
模块的新手,而且这种模式让我想知道subprocess.popen
和subprocess.run
之间的区别。这个命令有什么不同吗?一个人刚刚更新吗?哪个更好用?
答案 0 :(得分:35)
subprocess.run
was added in Python 3.5当您只想执行命令并等到它完成时,对subprocess.Popen
进行简化,但您不想同时执行任何其他操作。对于其他情况,您仍然需要使用subprocess.Popen
。
主要区别在于subprocess.run
执行命令而等待以完成命令,而使用subprocess.Popen
时,您可以在流程完成时继续执行您的操作,然后只需自己反复拨打subprocess.communicate
以向您的流程传递和接收数据。
请注意,subprocess.run
实际上正在为您调用Popen
和communicate
,因此您不需要创建循环来传递/接收数据,也不需要等待过程结束。
检查this site以获取subprocess.run
的哪些参数传递给Popen
以及传递到communicate
的信息。