Рубрики
Без рубрики

Выполнить команды из командной строки в программе Python

Во время работы в Python вы можете столкнуться с случаями, когда вы хотите быстрый способ запуска программ из … Tagged с Python, новичками, автоматизацией.

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

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

Это дает нам возможность:

  1. породить новые процессы
  2. Подключитесь к их вводам, выводам и ошибкам
  3. Получить их коды возврата

Распространенным использованием для подпроцесса будет перечисление файлов и папок в каталоге. Это использует метод прогона подпроцессы.

Код будет отличаться в зависимости от того, в какой операционной системе вы находитесь. Например, на компьютере на основе Windows это будет использование директора команды

Для Linux

import subprocess

subprocess.run('ls')

Для окон

import subprocess

subprocess.run("dir", shell=True)

В приведенном выше коде мы имеем:

  • Импорт подпроцесс -модуль
  • Вызовите модуль запуска из него
  • Передайте команду Directory Directory на основе вашей системы (LS/DIR). Если вы находитесь в Windows, вам придется дополнительно пройти, потому что DIR – это команда Shell, и вам нужно сообщить системе, что вы хотите ее использовать.

Мы автоматически получили вывод в терминале, хотя мы сами не печатали. Вот как работает команда Run – по умолчанию не захватывает нашу команду.

Посмотрим, что произойдет, если мы попытаемся захватить нашу команду, поместив ее в переменную

import subprocess

result = subprocess.run("dir", shell=True)

print(result)

Вывод не то, что вы ожидаете. Мы все еще получаем вывод, и сообщение, содержащее аргументы, которые были переданы, и код возврата.

Если мы хотим захватить выход, мы бы изменили код на это:

import subprocess

result = subprocess.run(["dir"], shell=True, capture_output=True, text=True)

print(result.stdout)

Мы добавили:

  • capture_output = Истинный : Чтобы захватить выход
  • текст = Верно : Декодировать выход в читаемый формат, поскольку он захвачен как байты
  • Мы тогда print result.stdout : результат как стандартный выход

То же самое можно получить с помощью следующего кода:

import subprocess

result = subprocess.run(["ls", "-la"], stdout=subprocess.PIPE, text=True)

print(result.stdout)

Разница в Труба этот код выполняет ту же функцию, что и

Кроме того, мы используем команду LS с аргументом -LA оба приняты в виде списка

Есть еще кое-что..

Есть еще больше, что вы можете сделать с подпроцессом, включая вывод в файл, чтение данных из файла и для интерактивного запуска программ, чтобы назвать несколько вещей. Узнайте все это и многое другое в: Полная статья на Pythonhowtoprogam

Оригинал: “https://dev.to/charlesw001/execute-commands-from-the-command-line-in-a-python-program-3edn”