我有一个需求,想在Python中执行以下的Shell命令并获取其输出:
echo This_is_a_testing | grep -c test
我可以使用这段python代码在python中执行上述shell命令:
>>> import subprocess
>>> subprocess.check_output("echo This_is_a_testing | grep -c test", shell=True)
'1\n'
然而,由于我不想使用"shell=True"选项,因此我尝试了以下Python代码:
>>> import subprocess
>>> p1 = subprocess.Popen(["echo", "This_is_a_testing"], stdout=subprocess.PIPE)
>>> p2 = subprocess.Popen(["grep", "-c", "test"], stdin=p1.stdout)
>>> p1.stdout.close()
>>> p2.communicate()
(None, None)
我想知道为什么输出结果是“None”,因为我已经参考了网页上的描述:http://docs.python.org/library/subprocess.html#subprocess.PIPE
我的代码是否有所遗漏?有什么建议/想法吗?提前感谢。