什么是.communicate()和.communicate()[0]之间的区别?

时间:2013-05-20 04:37:00

标签: python subprocess popen communicate

我正在使用python。我正在尝试运行一个进程并使用subprocess.popen获取输出。阅读后我看到人们使用communication()[0],但那不在文档中,它在一个例子中使用。我想知道是否有人可以填写我为什么会追加[0]来沟通()?

1 个答案:

答案 0 :(得分:3)

来自docs

Popen.communicate(input=None)
  

与流程交互:将数据发送到stdin。从stdout和stderr读取数据,   直到达到文件结尾。等待进程   终止。可选的输入参数应该是要发送的字符串   如果没有数据发送给孩子,则为子进程,或者为None。

communicate()会返回元组(stdoutdata,stderrdata)。

因此communicate()[0]用于访问stdoutdatacommunicate()[1]以访问stderrdata

要访问元组或列表中的元素,我们使用索引,第一个元素位于索引0。

>>> tup = ("foo", "bar")
>>> tup[0]
'foo'
>>> tup[1]
'bar'