python 中 Popen 的这个额外元组是什么?
What is this extra tuple from Popen in python?
我对发生的事情有点困惑。我想计算返回的行数以查看进程是否 运行ning。我正在使用 subprocess.Popen 到 运行 命令,以便我可以获得输出。但是,在测试我的脚本时,我看到了一些我没有指望的额外输出,我只是好奇为什么以及如何抑制它。
这是我的脚本中的一个片段。请原谅我清理它的任何拼写错误。
ssh = subprocess.Popen("ssh " + HOST + " ps -ef | grep jetty | wc -l", stdin=subprocess.PIPE, shell=True)
output = ssh.communicate()
print output
这个脚本的输出是:
1
(None, None)
文档说 returns 传递一个元组(stdoutdata、stderrdata)。为什么返回 1 然后返回 (None, None)?如何抑制 (None, None) line/message?
为了获得对命令标准输出and/or标准错误的引用,你必须传递subprocess.PIPE
作为stdout
和stderr
的值(分别) 关键字参数。否则,在元组中返回值 None
。由于您没有为 stdout
指定值,命令的输出将转到 Python 脚本的标准输出,这就是您看到“1”的原因。
1
是您的过程的输出(在本例中为 wc -l
)。所以你的打印语句正在生成 (None, None)
- 如果你不想要它,就不要打印它。
这是来自文档:subprocess.Popen.communicate
Note that if you want to send data to the process’s stdin, you need to create
the Popen object with stdin=PIPE. Similarly, to get anything other
than None in the result tuple, you need to give stdout=PIPE and/or
stderr=PIPE too
我对发生的事情有点困惑。我想计算返回的行数以查看进程是否 运行ning。我正在使用 subprocess.Popen 到 运行 命令,以便我可以获得输出。但是,在测试我的脚本时,我看到了一些我没有指望的额外输出,我只是好奇为什么以及如何抑制它。
这是我的脚本中的一个片段。请原谅我清理它的任何拼写错误。
ssh = subprocess.Popen("ssh " + HOST + " ps -ef | grep jetty | wc -l", stdin=subprocess.PIPE, shell=True)
output = ssh.communicate()
print output
这个脚本的输出是:
1
(None, None)
文档说 returns 传递一个元组(stdoutdata、stderrdata)。为什么返回 1 然后返回 (None, None)?如何抑制 (None, None) line/message?
为了获得对命令标准输出and/or标准错误的引用,你必须传递subprocess.PIPE
作为stdout
和stderr
的值(分别) 关键字参数。否则,在元组中返回值 None
。由于您没有为 stdout
指定值,命令的输出将转到 Python 脚本的标准输出,这就是您看到“1”的原因。
1
是您的过程的输出(在本例中为 wc -l
)。所以你的打印语句正在生成 (None, None)
- 如果你不想要它,就不要打印它。
这是来自文档:subprocess.Popen.communicate
Note that if you want to send data to the process’s stdin, you need to create the Popen object with stdin=PIPE. Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too