Почему запуск «os.system ('cmd')» ничего не делает в Python? - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь запускать команды командной строки, используя Python, но выполнение моей команды, похоже, ничего не дает. Полная команда, которую я передаю в os.system:

'cmd /c "apt.bat"'

Это должно запустить apt.bat, открывая другую программу в процессе. Однако ничего не происходит. Когда я передаю ту же команду в командную строку вручную, она работает правильно. Итак, чтобы попытаться разобраться в проблеме, я попытался запустить:

os.system('cmd')

, но ничего не произошло. Насколько мне известно, это должно открыть командную строку, но я могу ошибаться. Чтобы убедиться, что у меня правильный синтаксис и что os.system не сломана или что-то в этом роде, я также попытался запустить:

os.system('notepad')

, который открывает блокнот без проблем. Есть ли что-то особенное в cmd, из-за чего он просто не открывается? Мне не хватает синтаксиса? Может быть, разрешения?

Для справки, я на Windows 10. Python 3.7, использую Spyder 4.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Ваша проблема в том, что cmd не является командой. Вы должны использовать os.system('start cmd') или subprocess.run('start', shell = True), используя модуль subprocess.

0 голосов
/ 27 мая 2020

Синтаксис: os.system (команда)

команда: это строковый тип, который сообщает, какую команду выполнять.

Возвращаемое значение: На Unix возвращаемое значение - это статус выхода процесса и на Windows возвращаемое значение - это значение, возвращаемое системной оболочкой после выполнения команды.

Таким образом, когда вы запускаете следующую команду из python оболочки

os.system("cmd")

вы получите следующий результат:

enter image description here

Что похоже на результат, который вы получаете, когда вы запускаете ту же команду из командной строки. :

enter image description here

Т.е. возвращаемое значение - это значение, возвращаемое системной оболочкой после выполнения команды.

Таким образом, чтобы «запустить командную строку, используя python», сделайте следующее:

os.system("start cmd")

Обновить

Чтобы запустить определенную команду c, которую вы пытаетесь, вам просто нужно удалить одинарные кавычки, попробуйте следующее:

os.system("cmd /c apt.bat")
...