Запуск процесса в python с помощью Popen без консоли

Таким образом, старый браузер не анализирует Javascript-код, и страница не прерывается.

Обратная совместимость. Должен любить это.

16
задан sbirch 28 November 2009 в 21:50
поделиться

2 ответа

Из здесь :

import subprocess

def launchWithoutConsole(command, args):
    """Launches 'command' windowless and waits until finished"""
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    return subprocess.Popen([command] + args, startupinfo=startupinfo).wait()

if __name__ == "__main__":
    # test with "pythonw.exe"
    launchWithoutConsole("d:\\bin\\gzip.exe", ["-d", "myfile.gz"])

Обратите внимание, что иногда подавление консоли приводит к сбою вызовов подпроцесса с сообщением «Ошибка 6: недопустимый дескриптор». Быстрое исправление - перенаправить stdin , как описано здесь: Python работает как служба Windows: OSError: [WinError 6] Дескриптор недействителен

31
ответ дан 30 November 2019 в 12:20
поделиться

Вы могли бы просто выполнить subprocess.Popen ([command], shell = False) .

В любом случае это то, что я использую. Избавляет вас от всей ерунды установки флагов и прочего. После того, как он назван как .pyw или запущен с pythonw, он не должен открывать консоль.

0
ответ дан 30 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: