2010-05-29 5 views
6

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

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

+1

Какая платформа? (Звучит как Windows.) – 2010-05-29 16:05:45

+0

related: [Как скрыть консоль, когда я использую os.system() или subprocess.call()?] (Http://stackoverflow.com/q/7006238/4279) – jfs

ответ

23

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

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

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

CREATE_NO_WINDOW 
0x08000000 

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

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

+0

спасибо за быстрый ответ! –

+0

Проверено на компьютере с Windows. Спасибо! –

+0

Очень приятно, это работает! – ChristopheD

Смежные вопросы