【问题标题】:whats the difference between .communicate() and .communicate()[0]?.communicate() 和 .communicate()[0] 有什么区别?
【发布时间】:2013-05-14 14:34:41
【问题描述】:

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

【问题讨论】:

    标签: python subprocess popen communicate


    【解决方案1】:

    来自docs

    Popen.communicate(input=None)
    

    与进程交互:将数据发送到标准输入。从 stdout 和 stderr 读取数据, 直到到达文件末尾。等待进程 终止。可选输入参数应该是要发送的字符串 到子进程,如果不应该向子进程发送数据,则为 None。

    communicate() 返回一个元组(stdoutdata、stderrdata)。

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2012-10-31
      • 2018-11-11
      • 1970-01-01
      • 2016-03-23
      • 2021-06-16
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多