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.
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): …
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 …
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 …
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().
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.
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?
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 …
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 …
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 …
Chcę używać subprocess.check_output()z ps -A | grep 'process_name'. Próbowałem różnych rozwiązań, ale jak dotąd nic nie działało. Czy ktoś może mi pomóc, jak to zrobić?
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 …
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, …
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?
Jak odzyskać kod wyjścia, korzystając z subprocessmodułu i communicate()metody Pythona ? Odpowiedni kod: import subprocess as sp data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0] Czy powinienem to robić w inny sposób?
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.