Próbuję napisać program w Pythonie, a mi kazano uruchomić plik .exe. Kiedy ten plik .exe jest uruchamiany, wypluwa mnóstwo danych i potrzebuję określonej linii wydrukowanej na ekranie. Jestem prawie pewien, że muszę użyć subprocess.popen
lub czegoś podobnego, ale jestem nowy w podprocesie i nie mam pojęcia. Każdy ma łatwy sposób, aby to zrobić?!? Dzięki!!Jak mogę uchwycić wyjście standardowe procesu potomnego?
7
A
Odpowiedz
17
coś takiego:
import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
23
@ rozwiązania Paola jest idealne, jeśli jesteś zainteresowany wyjście drukowania po zakończeniu procesu wykonywania. Jeśli chcesz sondować dane wyjściowe podczas działania procesu, musisz wykonać to w następujący sposób:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
while True:
out = process.stdout.readline(1)
if out == '' and process.poll() != None:
break
if out.startswith('myline'):
sys.stdout.write(out)
sys.stdout.flush()
Powiązane problemy
- 1. Przechwyć standardowe wyjście procesu z libuv
- 2. Jak przekazywać wiadomości i standardowe wyjście z potomka do elementu nadrzędnego w module procesu potomnego node.js?
- 3. Jak uchwycić RCurl wyjście opisowy
- 4. Otrzymywanie formy procesu potomnego
- 5. Jak zrobić wyjście GCC na standardowe wyjście?
- 6. Przechwyć standardowe wyjście i nadal wyświetlaj je w oknie konsoli.
- 7. Jak przekazać STDIN do procesu potomnego node.js
- 8. Rozwidlenie procesu potomnego i wstrzyknięcia zależnego
- 9. Swift: jak wypłukać standardowe wyjście po println?
- 10. Jak przetestować kod zapisujący na standardowe wyjście?
- 11. Przekazywanie flag/argów węzła do procesu potomnego
- 12. nohup dla procesu potomnego w systemie UNIX
- 13. czas potrzebny na rozwidlenie procesu potomnego
- 14. Rozpoczęcie procesu potomnego z ograniczoną priorytetu
- 15. Jak odczytać wyjście polecenia Android procesu
- 16. W jaki sposób mogę skompresować standardowe pliki do standardowego formatu, a także wypisać standardowe wyjście?
- 17. R: standardowe wyjście błędów z lm obiektu
- 18. Jak odczytać dane wyjściowe procesu potomnego bez blokowania w Rust?
- 19. Standardowe komendy WPF - gdzie jest wyjście?
- 20. Przekieruj standardowe wyjście z SBT do pliku
- 21. C++ FILE wskaźnik na standardowe wyjście?
- 22. Python 2.x - Napisz wyjście binarne na standardowe wyjście?
- 23. Jak używać fork() do demonizacji procesu potomnego niezależnie od rodzica?
- 24. Czy możesz uchwycić wyjście magicznych metod ipython? (timeit)
- 25. Jak Ci de podniesienie uprawnień dla procesu potomnego
- 26. Drukowanie na standardowe wyjście powoduje zablokowanie goroutiny?
- 27. Standardowe wyjście Qt. cout nie drukuje
- 28. Gdzie jest standardowe wyjście dla aplikacji Mac?
- 29. Jak uzyskać wyniki (standardowe wyjście) polecenia TCL exec?
- 30. Jak przechwycić wyjście standardowe z wywołania funkcji Pythona?
Jak odczytałbym określoną linię? czy to gdzie jest 0? I tak, jestem zainteresowany drukowaniem danych wyjściowych po zakończeniu procesu. Również tam, gdzie masz "twoją komendę", czy tam jest rozszerzenie exe? – Tyler
"Wynik" będzie całkowitym wynikiem "twojej komendy". Następnie możesz przetworzyć ten ciąg (lub obiekt bajtów, w Py3.0), aby znaleźć szukaną linię. –
[0] oznacza, że pierwszy element krotki został zwrócony (stdout, stderr); możesz przetworzyć wynik, który będzie ciągiem, według własnego upodobania, np. znaleźć konkretną linię. "twoja komenda" to twoje pełne polecenie, ewentualnie pełna ścieżka do polecenia, jeśli polecenie nie * znajduje się na ścieżce * (przynajmniej na * nix). – miku