通过Python脚本处理cmdline的输出

通过Python脚本处理cmdline的输出,python,scripting,process,Python,Scripting,Process,我试图在Python2.6中使用subprocess模块来运行命令并获得其输出。该命令通常按如下方式运行: /usr/local/sbin/kamctl fifo profile_get_size myprofile | awk -F ':: ' '{print $2}' >>> import subprocess >>> process = subprocess.Popen("echo 'test'", shell=True, stdout=subproc

我试图在Python2.6中使用subprocess模块来运行命令并获得其输出。该命令通常按如下方式运行:

/usr/local/sbin/kamctl fifo profile_get_size myprofile | awk -F ':: ' '{print $2}'
>>> import subprocess
>>> process = subprocess.Popen("echo 'test'", shell=True, stdout=subprocess.PIPE)
>>> process.wait()
0
>>> process.stdout.read()
'test\n'

使用脚本中的subprocess模块执行带有这些参数的命令并从命令中获取返回值的最佳方法是什么?我正在使用Python 2.6。

f.e.标准。您可以得到如下结果:

/usr/local/sbin/kamctl fifo profile_get_size myprofile | awk -F ':: ' '{print $2}'
>>> import subprocess
>>> process = subprocess.Popen("echo 'test'", shell=True, stdout=subprocess.PIPE)
>>> process.wait()
0
>>> process.stdout.read()
'test\n'

f、 你能得到这样的结果吗

/usr/local/sbin/kamctl fifo profile_get_size myprofile | awk -F ':: ' '{print $2}'
>>> import subprocess
>>> process = subprocess.Popen("echo 'test'", shell=True, stdout=subprocess.PIPE)
>>> process.wait()
0
>>> process.stdout.read()
'test\n'

您想要输出、返回值(又名状态码)还是两者都要

如果stdout和/或stderr上的管道发出的数据量不是太大,那么获取“以上所有内容”就非常简单:


如果您必须处理潜在的大量输出,则需要更多的代码——从所讨论的管道来看,您似乎不应该有这个问题。

您想要输出、返回值(也称为状态码)还是两者都要

如果stdout和/或stderr上的管道发出的数据量不是太大,那么获取“以上所有内容”就非常简单:


如果您必须处理潜在的大量输出,则需要更多的代码——从所讨论的管道来看,您似乎不应该有这个问题。

如果您只想检查调用是否成功(不是您试图做的,但最好知道),您可以使用subprocess.check\u call()-如果退出代码不是0,这将引发异常。如果您只想检查调用是否成功(不是您试图执行的操作,但很高兴知道),则可以使用subprocess。check_call()-如果退出代码不是0,这将引发异常。可以询问为什么在此处使用shell=True以及subprocess.PIPE吗?谢谢剩下的部分。您需要一个shell来解释和正确执行字符串中的管道;您需要
subprocess.PIPE
,才能将字符串(由shell执行)的全部
stdout
返回到Python程序中。是否可以询问为什么在这里使用shell=True以及subprocess.PIPE?谢谢剩下的部分。您需要一个shell来解释和正确执行字符串中的管道;您需要
subprocess.PIPE
,以使整个
stdout
命令字符串(由shell执行)返回到Python程序。