tengo un caso de querer ejecutar el siguiente comando del shell en Python y obtener la salida,Python: ¿cómo ejecutar comandos de shell con pipe?
echo This_is_a_testing | grep -c test
que podría utilizar este código Python para ejecutar el comando shell anteriormente en pitón,
>>> import subprocess
>>> subprocess.check_output("echo This_is_a_testing | grep -c test", shell=True)
'1\n'
sin embargo, como no quiero utilizar la opción de "shell = True", probé el siguiente código 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)
me pregunto por qué la salida es "Ninguno" como Me he referido a las descripciones en la página web: http://docs.python.org/library/subprocess.html#subprocess.PIPE
¿He perdido algunos puntos en mi código? ¿Alguna sugerencia/idea? Gracias por adelantado.
actualizada relacionada con la respuesta – avasal
: [¿Cómo uso subprocess.Popen para conectar varios procesos por los tubos?] (http://stackoverflow.com/q/295459/4279) – jfs