Я успешно запустил несколько скриптов Python, вызывая их из базового скрипта с помощью модуля подпроцесса:
subprocess.popen([sys.executable, 'script.py'], shell=True)
Однако каждый из этих сценариев выполняет некоторые моделирования (файлы .exe из приложения C ++), которые генерируют некоторый вывод в оболочку. Все эти выходные данные записываются в базовую оболочку, откуда я запустил эти скрипты. Я хотел бы создать новую оболочку для каждого скрипта. Я пытался сгенерировать новые оболочки, используя атрибут shell=True
при вызове subprocess.call (также пробовал с popen), но он не работает.
Как получить новую оболочку для каждого процесса, сгенерированного с помощью subprocess.call?
Я читал документацию о stdin и stdout, предложенную Спенсером, и обнаружил флаг, который решил проблему: subprocess.CREATE_NEW_CONSOLE. Возможно, перенаправление каналов тоже делает свою работу, но это, кажется, самое простое решение (по крайней мере, для этой конкретной проблемы). Я только что проверил и отлично работал:
subprocess.popen([sys.executable, 'script.py'], creationflags = subprocess.CREATE_NEW_CONSOLE)