Выполнение команд оболочки без окна оболочки - PullRequest
7 голосов
/ 29 мая 2010

При использовании subprocess.call или subprocess.Popen при выполнении команды оболочки окно оболочки быстро появляется и исчезает.

Как запустить команду оболочки без окна оболочки?

1 Ответ

24 голосов
/ 29 мая 2010

Я полагаю, что ваши наблюдения ограничены Windows, поскольку, как я полагаю, это единственная платформа, на которой вы столкнетесь с проблемой "флеш-консоли". Если это так, то docs предлагает следующий полуполезный абзац:

Информация о запуске и создание флагов, если дано, будет передано базовая функция CreateProcess (). Они могут указывать такие вещи, как внешний вид главного окна и приоритет для нового процесса. (Windows только)

К сожалению, онлайновые документы Python не воспроизводят соответствующую часть документов Windows API, поэтому их необходимо найти в другом месте, например, начиная с здесь на MSDN, что приводит вас здесь для creationflags и, в частности, к

CREATE_NO_WINDOW
0x08000000

Процесс представляет собой консольное приложение который запускается без консоли окно. Следовательно, ручка консоли для приложения не установлено.

Таким образом, добавление creationflags=0x08000000 к вашему вызову Popen должно помочь (к сожалению, у меня нет машины под управлением Windows, на которой можно попробовать это, поэтому вам придется попробовать это самостоятельно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...