ho letto ogni thread che ho trovato su StackOverflow su come richiamare comandi di shell da Python utilizzando subprocess
, ma non riuscivo a trovare una risposta che si applica alla mia situazione di seguito:tubazioni Shell con sottoprocesso in Python
vorrei fare il seguente da Python:
Eseguire il comando shell
command_1
. Raccogliere l'output nella variabileresult_1
Shell tubo
result_1
incommand_2
e raccogliere l'output sulresult_2
. In altre parole, eseguirecommand_1 | command_2
usando il risultato che ho ottenuto durante l'esecuzionecommand_1
nella fase precedenteEseguire la stessa tubazione
result_1
in un terzo comandocommand_3
e raccogliendo il risultato inresult_3
.
Finora ho provato:
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();
il motivo sembra essere che "echo " + result_1
non simula il processo per ottenere l'output di un comando per tubazioni.
È possibile utilizzare il sottoprocesso? Se é cosi, come?
Vedere [questo esempio nella documentazione] (http://docs.python.org/library/subprocess.html#replacing-shell-pipeline) per il modo giusto per farlo. –
Grazie a @SvenMarnach, mi consentirebbe comunque di raccogliere l'output del primo comando in una variabile Python? –