Как я могу создать новые оболочки для запуска скриптов Python из базы Сценарий Python?

Я успешно выполнили несколько сценариев 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)
28
задан Peter Mortensen 3 June 2018 в 16:50
поделиться