subprocess.Popen не запускает программу - PullRequest
0 голосов
/ 04 мая 2018

Я хочу запустить программу командной строки из моего скрипта Python. Я работаю на Windows 10 с Python 3.6. Следующий код запускает командную строку, но ничего не печатает. (Если я выведу «echo hi» в этом окне командной строки, он будет работать нормально).

import subprocess
p=subprocess.Popen(['cmd','echo','hi'])

Если я попытаюсь

p=subprocess.check_call(['cmd','echo','hi'])

Я получаю CalledProcessError: Command '['cmd', 'echo', 'hi']' returned non-zero exit status 3221225786.

Если я попытаюсь p=subprocess.check_call(['echo','hi']), я получу сообщение FileNotFoundError: [WinError 2] The system cannot find the file specified.

Что не так?

1 Ответ

0 голосов
/ 20 июня 2018

Попробуй так:

import subprocess

try:
    subprocess.check_call(["call", "cmd", "/k", "echo Hello"], shell=True)

except subprocess.CalledProcessError:
    print("Error")

Значение:

call - вызвать оболочку внутри исполняемого файла python

cmd - открыть окно командной строки

/k - запустить команду и затем вернуться к приглашению cmd (в основном, означает удерживать окно cmd

Если вы хотите запустить все в новой оболочке, замените call на ключевое слово start в аргументах.

Для дополнительных флагов: запустите cmd /? в приглашении cmd.

Примечание: Хорошее программирование - помещать вызовы методов или функций в блоки обработки ошибок, такие как try-except-finally.

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