Mam pomyślnie uruchomić kilka skryptów Pythona nazywając je ze skryptu bazowej za pomocą modułu subprocess:Jak mogę odradzać nowe powłoki do uruchamiania skryptów Pythona z podstawowego skryptu python?
subprocess.popen([sys.executable, 'script.py'], shell=True)
Jednak każdy z tych skryptów wykonuje pewne symulacje (pliki .exe z C++ aplikacji), które wytwarzają pewne wyjście do muszla. Wszystkie te wyniki są zapisywane do powłoki podstawowej, skąd uruchomiłem te skrypty. Chciałbym wygenerować nową powłokę dla każdego skryptu. Próbowałem generować nowe powłoki za pomocą atrybutu shell = True podczas wywoływania subprocess.call (również próbowałem z popen), ale to nie działa.
Jakieś pojęcie o tym, jak uzyskać nową powłokę dla każdego procesu wygenerowanego za pomocą podprocesu.
Dzięki.
Edycja: Czytałem dokument o stdin i stdout zgodnie z sugestią Spencer, i znalazłem flagę, która rozwiązała problem: podproces.CREATE_NEW_CONSOLE. Może przekierowanie rur również działa, ale wydaje się to być najprostszym rozwiązaniem (przynajmniej dla tego konkretnego problemu). Właśnie przetestowałem i działałem idealnie:
subprocess.popen([sys.executable, 'script.py'], creationflags = subprocess.CREATE_NEW_CONSOLE)
Dziękuję wszystkim!
Czy to znaczy, że chce do uruchamiania skryptów w różnych oknach terminali? Jeśli tak, to jakiego programu terminalowego używasz? – unutbu
@unutbu: tak, chcę uruchomić każdy skrypt w innym oknie terminala. Używam podstawowego terminala Windowsa (po prostu działającego cmd) – emiguel
@Eder: Nie wiem zbyt wiele o systemie Windows. Czy to pomaga: http://stackoverflow.com/questions/303838/create-a-new-cmd-exe-window-from-within-another-cmd-exe-prompt? (np. 'start cmd.exe' lub' start python script.py' ...) – unutbu