leí todos los hilos que encontré en StackOverflow sobre cómo invocar comandos shell de Python usando subprocess
, pero no pude encontrar una respuesta que se aplica a mi situación a continuación:tuberías de Shell con el subproceso en Python
me gustaría hacer lo siguiente de Python:
Ejecute el comando de shell
command_1
. Recoger la salida en la variableresult_1
tubo de Shell
result_1
encommand_2
y recoger la salida deresult_2
. En otras palabras, ejecutarcommand_1 | command_2
usando el resultado que obtuve cuando se ejecutacommand_1
en el paso anteriorHaga lo mismo tuberías
result_1
en un tercer comandocommand_3
y recogiendo el resultado enresult_3
.
Hasta aquí he intentado:
p = subprocess.Popen(command_1, stdout=subprocess.PIPE, shell=True)
result_1 = p.stdout.read();
p = subprocess.Popen("echo " + result_1 + ' | ' +
command_2, stdout=subprocess.PIPE, shell=True)
result_2 = p.stdout.read();
la razón parece ser que "echo " + result_1
no simula el proceso de obtención de la salida de un comando para la tubería.
¿Esto es posible con el subproceso? ¿Si es así, cómo?
Consulte [este ejemplo en los documentos] (http://docs.python.org/library/subprocess.html#replacing-shell-pipeline) para conocer la forma correcta de hacerlo. –
Gracias @SvenMarnach, ¿eso me permitiría recopilar la salida del primer comando en una variable de Python? –