Python-如何使用管道执行Shell命令,但不使用'shell = True'?
我有一种情况想要在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
我是否错过了代码中的某些要点?有什么建议/想法吗?提前致谢。