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

Как вызвать внешнюю команду в Python?

Резюме: Чтобы вызвать внешнюю команду в сценарии Python, используйте любой из следующих способов: subprocess.Call () Функция subsubprocess.run () ФункцияubProcess.popen ClassoS.System () Функция. Функция функции, независимо от того, является ли вы разработчиком или Системный администратор, скрипты автоматизации будут общей частью вашей ежедневной рутины. Они могут включать в себя автоматические рутинные задачи, такие как резервные копии файлов или здоровья … Как вызвать внешнюю команду в Python? Прочитайте больше “

Автор оригинала: Shubham Sayon.

Резюме: Чтобы вызвать внешнюю команду в сценарии Python, используйте любой из следующих способов:

  • SubProcess.Call () функция
  • subcessess.run () функция
  • Подпроцесс.Попан Учебный класс
  • OS.System () функция
  • OS.POPEN () функция

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

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

Проблема: Учитывая внешнюю команду, которая может работать в вашей операционной системе; Как вызвать команду с помощью сценария Python?

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

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

Способ 1: Использование функции subcessess.call ()

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

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

Позвоните () Функция модуля подпроцесса используется для запуска внешнего процесса, ожидает, пока команда не завершится, а затем предоставляет код возврата. Таким образом, SubProcess.Call () Функция используется для возврата кода выхода, который затем может использоваться в скрипте, чтобы определить, успешно ли выполняется команда, или она вернула ошибку. Любой возвратный код, кроме «0» означает, что произошла ошибка в выполнении.

Давайте посмотрим на следующую программу, используя Позвоните () Функция для проверки, если Ping Test успешен в системе:

import subprocess

return_code = subprocess.call(['ping', 'localhost'])
print("Output of call() : ", return_code)

Выход:

Pinging DESKTOP-PC [::1] with 32 bytes of data:
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 

Ping statistics for::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Output of call() :  0

Метод 2: Использование функции SubProcess.run ()

В Python 3.5 и выше , Беги () Функция – это рекомендуемый способ вызовы подпрокат Модуль для запуска внешней команды.

Это похоже на Позвоните () Функция, однако, в отличие от Позвоните () Функция не возвращает исключение, если основной процесс возвращает код ошибки. Беги () Функция более гибкова, чем Позвоните () Функция и вместо того, чтобы возвращать код возврата, он возвращает Завершен доставка Объект после завершения кода завершит его выполнение.

import subprocess

return_code = subprocess.run(['ping', 'localhost'])
print("Output of run() : ", return_code)

Выход:

Pinging DESKTOP-PC [::1] with 32 bytes of data:
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 
Reply from ::1: time<1ms 

Ping statistics for::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Output of run() :  CompletedProcess(args=['ping', 'localhost'], returncode=0)

Способ 3: Использование подпроцесса.

Использование SubProcess.Popen () Рекомендуется только для продвинутых случаев, которые не могут быть обработаны другими способами, такими как subcessess.run () или SubProcess.Call () Отказ Это потому, что из-за его всеобъемлющего природы это сложнее и сложно управлять. Тем не менее, он может оказаться инструментальным в работе с комплексными операциями.

Давайте посмотрим на следующий код, который использует Popen () Открыть Microsoft Excel в Windows:

import subprocess

subprocess.Popen("C:\Program Files (x86)\Microsoft Office\Office12\excel.exe")

Способ 4: Использование функции OS.System (Command)

ОС Модуль в Python предоставляет несколько функций для взаимодействия с оболочкой и системой напрямую. Давайте посмотрим на пару методов, чтобы вызвать внешние команды, используя ОС модуль.

OS.System () Функция помогает немедленно взаимодействовать с оболочкой, передавая команды и аргументы в систему оболочки. Он возвращает код выхода после завершения команды, что означает, что выходной код 0 обозначает успешное выполнение, в то время как что-либо, кроме 0, означает, что выполнение было неудачно. С одной стороны, это удобный подход с момента Система () Способ может быть использован для запуска нескольких команд сразу с помощью труб и перенаправления ввода/вывода; В то время как с другой стороны, вы должны вручную обращаться с эвакулярными символами, такими как пробелы.

Давайте посмотрим на следующую программу, которая используется для отображения текущей даты системы, используя OS.System () команда:

import os

dt = 'date'
os.system(dt)

Выход:

The current date is: 03-09-2020 

Вы можете попробовать это самостоятельно в нашей интерактивной онлайн-оболочке:

Упражнение : Запустите код. Почему вывод отличается от вывода на собственной машине?

Способ 5: Использование функции OS.POPEN («команда»)

OS.POPEN () будет вести себя так же, как OS.System Функция, однако, вместо того, чтобы возвращать код возврата, он возвращает файловый объект, который можно использовать для доступа к стандартному входу/выводу для выполнения процесса. Popen Команда позволяет нам взаимодействовать с системой и создавать трубу в или из другой команды. У него четыре разных варианта:

  • пополнить
  • Popen2.
  • Popen3.
  • Popen4.

Давайте посмотрим на следующую программу, которая использует Popen Чтобы напечатать строку как вывод, вызывая команду оболочки, эхо :

import os

print (os.popen("echo Hello FINXTER!").read())

Выход:

Hello FINXTER!

Попробуй сам:

Упражнение : Поддерживает ли команда Echo на сервере для этого работать?

Какой метод вы должны использовать?

  • OS.System () : Если печатать вывод на консоли не является критерием, и вам необходимо запустить только несколько простых команд, которые вы можете использовать OS.System () функция.
  • subcessess.run () : Если вы хотите управлять входом и выходом внешней команды, то используйте subcessess.run () команда.
  • Подпроцесс.Попан : Если вы хотите управлять сложной внешней командой, а также продолжить свою работу, вы можете использовать Подпроцесс.Попан учебный класс.

Вывод

Таким образом, из вышеперечисленного обсуждения мы можем сделать вывод, что следующие методы могут быть использованы для вызова внешней команды в Python:

  1. SubProcess.Call () функция
  2. subcessess.run () функция
  3. Подпроцесс.Попан Учебный класс
  4. OS.System () функция
  5. OS.POPEN () функция

Официальная документация Python рекомендует использовать подпрокат Модуль над ОС Функции модуля, поскольку подпрокат Модуль обеспечивает несколько преимуществ над ОС Модуль как более гибкие варианты, лучше Обработка ошибок , и многое другое.

Я надеюсь, что вы нашли эту статью полезную, и это поможет вам понять, как вызвать внешние команды в Python. Оставайтесь настроиться на более интересные концепции в будущем.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: