Pytania otagowane jako subprocess

Moduł podprocesu Pythona umożliwia tworzenie nowych procesów, łączenie się z ich potokami wejścia / wyjścia / błędów i uzyskiwanie ich kodów powrotu. Użyj go, aby uruchomić polecenie powłoki lub plik wykonywalny w Pythonie.


16
Uruchamianie polecenia powłoki i przechwytywanie danych wyjściowych
Chcę napisać funkcję, która wykona polecenie powłoki i zwróci jego wynik jako ciąg , bez względu na to, czy jest to komunikat o błędzie czy sukcesie. Chcę tylko uzyskać ten sam wynik, który uzyskałbym za pomocą wiersza poleceń. Jaki byłby przykład kodu, który zrobiłby coś takiego? Na przykład: def run_command(cmd): …
905 python  shell  subprocess 

30
Nieblokujący odczyt w podprocesie.PIPE w pythonie
Korzystam z modułu podprocesu, aby uruchomić podproces i połączyć się z jego strumieniem wyjściowym (standardowym wyjściem). Chcę mieć możliwość wykonywania nieblokujących odczytów na swoim standardowym wyjściu. Czy istnieje sposób, aby blokować .readline lub sprawdzić, czy w strumieniu znajdują się dane przed wywołaniem .readline? Chciałbym, żeby to było przenośne lub przynajmniej …

29
Korzystanie z modułu „podproces” z limitem czasu
Przekaż opinię na temat przepełnienia stosu w następujący sposób : Przekaż opinię na temat stosu i przepełnienia stosu Oto kod Pythona, aby uruchomić dowolne polecenie zwracające jego stdoutdane lub zgłosić wyjątek od niezerowych kodów wyjścia: proc = subprocess.Popen( cmd, stderr=subprocess.STDOUT, # Merge stdout and stderr stdout=subprocess.PIPE, shell=True) communicate służy do …

11
Jak zakończyć podprocesję Pythona uruchomioną z shell = True
Uruchamiam podproces za pomocą następującego polecenia: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) Jednak gdy próbuję zabić za pomocą: p.terminate() lub p.kill() Polecenie działa w tle, więc zastanawiałem się, jak mogę faktycznie zakończyć proces. Zauważ, że kiedy uruchamiam polecenie z: p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) To kończy się pomyślnie podczas wydawania p.terminate().

15
Przechowuj dane wyjściowe wywołania podprocesu. Otwórz w ciągu
Próbuję wykonać wywołanie systemowe w Pythonie i zapisać dane wyjściowe w ciągu znaków, którym mogę manipulować w programie Python. #!/usr/bin/python import subprocess p2 = subprocess.Popen("ntpq -p") Próbowałem kilku rzeczy, w tym niektórych sugestii tutaj: Pobieranie danych wyjściowych z subprocess.call () ale bez powodzenia.
300 python  subprocess 

8
Podproces języka Python / Popen ze zmodyfikowanym środowiskiem
Uważam, że uruchamianie zewnętrznego polecenia w nieco zmodyfikowanym środowisku jest bardzo częstym przypadkiem. Tak zazwyczaj to robię: import subprocess, os my_env = os.environ my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"] subprocess.Popen(my_command, env=my_env) Mam przeczucie, że jest lepszy sposób; czy to wygląda dobrze?
285 python  subprocess  popen 

5
Jak ukryć dane wyjściowe podprocesu w Pythonie 2.7
Używam eSpeak na Ubuntu i mam skrypt Python 2.7, który drukuje i wypowiada komunikat: import subprocess text = 'Hello World.' print text subprocess.call(['espeak', text]) eSpeak wydaje pożądane dźwięki, ale zaśmieca powłokę z pewnymi błędami (ALSA lib ..., brak połączenia z gniazdem), więc nie mogę łatwo odczytać tego, co zostało wcześniej …

11
Jak przekazać ciąg do podprocesu.Popen (używając argumentu stdin)?
Jeśli wykonam następujące czynności: import subprocess from cStringIO import StringIO subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0] Dostaję: Traceback (most recent call last): File "<stdin>", line 1, in ? File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 533, in __init__ (p2cread, p2cwrite, File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 830, in _get_handles p2cread = stdin.fileno() AttributeError: 'cStringIO.StringI' object has no attribute 'fileno' Najwyraźniej obiekt cStringIO.StringIO …
280 python  subprocess  stdin 

5
Rzeczywiste znaczenie „shell = True” w podprocesie
Z subprocessmodułem wywołuję różne procesy . Mam jednak pytanie. W następujących kodach: callProcess = subprocess.Popen(['ls', '-l'], shell=True) i callProcess = subprocess.Popen(['ls', '-l']) # without shell Oba działają. Po przeczytaniu dokumentacji dowiedziałem się, że shell=Trueoznacza to wykonanie kodu przez powłokę. Oznacza to, że w przypadku nieobecności proces rozpoczyna się bezpośrednio. Więc …
260 python  subprocess 


9
czytaj standardowe wyjście podprocesu linia po linii
Mój skrypt Pythona używa podprocesu do wywołania bardzo głośnego narzędzia linux. Chcę zapisać wszystkie dane wyjściowe w pliku dziennika i pokazać niektóre z nich użytkownikowi. Myślałem, że następujące działania będą działać, ale dane wyjściowe nie są wyświetlane w mojej aplikacji, dopóki narzędzie nie wygeneruje znacznej ilości danych wyjściowych. #fake_utility.py, just …
235 python  subprocess 

13
Ciągłe drukowanie wyniku podprocesu podczas działania procesu
Aby uruchomić programy z moich skryptów Python, używam następującej metody: def execute(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = process.communicate()[0] exitCode = process.returncode if (exitCode == 0): return output else: raise ProcessException(command, exitCode, output) Więc kiedy uruchamiam taki proces Process.execute("mvn clean install"), mój program czeka, aż proces się zakończy, …
201 python  subprocess 

1
Jak mogę określić katalog roboczy dla popen
Czy istnieje sposób na określenie działającego katalogu poleceń w Pythonie subprocess.Popen()? Na przykład: Popen('c:\mytool\tool.exe', workingdir='d:\test\local') Mój skrypt w języku Python znajduje się w C:\programs\python Czy można uruchomić C:\mytool\tool.exew katalogu D:\test\local? Jak ustawić katalog roboczy dla podprocesu?
187 python  subprocess  popen 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.