Как выполнять команды в cmd из Python?

В Python для выполнения команд в командной строке (cmd) есть несколько способов. Рассмотрим самые часто используемые из них.

1. С помощью модуля os. Модуль os предоставляет функции для работы с операционной системой, в том числе для выполнения команд в cmd. Для выполнения команды можно использовать функцию os.system():

import os

command = "dir"  # пример команды, в данном случае - вывод списка файлов в текущей директории
os.system(command)  # выполнение команды в cmd

При выполнении этого кода в cmd будет выполнена команда dir, и результат ее выполнения будет выведен на экран.

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

2. С помощью модуля subprocess. Модуль subprocess позволяет создавать новые процессы, подключаться к их вводу/выводу/ошибкам и получать результат выполнения команды. Наиболее полезной функцией в данном модуле является subprocess.run():

import subprocess

command = "dir"  # пример команды, в данном случае - вывод списка файлов в текущей директории
result = subprocess.run(command, shell=True, capture_output=True, text=True)
print(result.stdout)  # вывод результата выполнения команды

В этом примере команда dir будет выполнена, а результат ее выполнения будет доступен через атрибут stdout объекта result.

Обратите внимание, что мы передали аргументы shell=True, capture_output=True и text=True в subprocess.run(). Аргумент shell=True используется для выполнения команд с помощью оболочки, что позволяет использовать специальные символы, такие как > или |. Аргумент capture_output=True используется для перехвата вывода команды, а аргумент text=True используется для преобразования вывода команды в текстовую строку.

3. С помощью модуля pyautogui. Модуль pyautogui предоставляет функции для автоматизации взаимодействия с интерфейсом операционной системы, включая запуск команд в cmd:

import pyautogui

command = "dir"  # пример команды, в данном случае - вывод списка файлов в текущей директории
pyautogui.hotkey('win', 'r')  # вызов диалогового окна "Выполнить"
pyautogui.typewrite('cmd')  # ввод команды "cmd" в окно "Выполнить"
pyautogui.press('enter')  # нажатие клавиши "Enter" для запуска cmd
pyautogui.typewrite(command)  # ввод команды в окно cmd
pyautogui.press('enter')  # нажатие клавиши "Enter" для выполнения команды

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

Это не исчерпывающий список способов выполнения команд в cmd из Python, но данные методы являются наиболее популярными и простыми для использования. Выбор метода зависит от ваших конкретных потребностей и требований.