Czytam każdy wątek znalazłem na StackOverflow na wywoływanie poleceń powłoki z użyciem subprocess
Pythonie, ale nie mogę znaleźć odpowiedzi, które odnoszą się do mojej sytuacji poniżej:rurociągi Shell z podproces w Pythonie
Chciałbym zrobić następujące od Python:
Uruchom polecenie powłoki
command_1
. Zebrać wyjście zmiennąresult_1
Shell rury
result_1
docommand_2
i zbierać dane wyjścioweresult_2
. Innymi słowy, należy uruchomićcommand_1 | command_2
pomocą rezultat że uzyskany po uruchomieniucommand_1
w etapie przedzrobić to samo orurowanie
result_1
do trzeciej komendziecommand_3
i zbieranie wynik wresult_3
.
Do tej pory próbowałem:
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();
powodem wydaje się być to, że "echo " + result_1
nie symulować proces uzyskiwania wyjście polecenia dla rurociągów.
Czy to w ogóle możliwe przy użyciu podprocesu? Jeśli tak to jak?
Zobacz [ten przykład w dokumentacji] (http://docs.python.org/library/subprocess.html#replacing-shell-pipeline), aby uzyskać odpowiedni sposób. –
Dzięki @SvenMarnach, czy to nadal pozwala mi gromadzić dane wyjściowe pierwszego polecenia w zmiennej Python? –