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