Я успешно выполнили несколько сценариев 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)