subprocess.popen和subprocess.run有什么区别

时间:2016-08-28 04:00:31

标签: python

我是subprocess模块的新手,而且这种模式让我想知道subprocess.popensubprocess.run之间的区别。这个命令有什么不同吗?一个人刚刚更新吗?哪个更好用?

1 个答案:

答案 0 :(得分:35)

subprocess.run was added in Python 3.5当您只想执行命令并等到它完成时,对subprocess.Popen进行简化,但您不想同时执行任何其他操作。对于其他情况,您仍然需要使用subprocess.Popen

主要区别在于subprocess.run执行命令而等待以完成命令,而使用subprocess.Popen时,您可以在流程完成时继续执行您的操作,然后只需自己反复拨打subprocess.communicate以向您的流程传递和接收数据。

请注意,subprocess.run实际上正在为您调用Popencommunicate,因此您不需要创建循环来传递/接收数据,也不需要等待过程结束。

检查this site以获取subprocess.run的哪些参数传递给Popen以及传递到communicate的信息。