Поиск по сайту:

Системная команда Python — os.system(), subprocess.call()


В этом уроке мы узнаем о системной команде Python. Ранее мы узнали о случайных числах Python.

Системная команда Python

При создании программы на python вам может потребоваться выполнить некоторые команды оболочки для вашей программы. Например, если вы используете Pycharm IDE, вы можете заметить, что есть возможность поделиться своим проектом на github. И вы, наверное, знаете, что передача файлов осуществляется с помощью git, который работает с помощью командной строки. Итак, для этого Pycharm выполняет некоторые команды оболочки в фоновом режиме. Однако в этом руководстве мы изучим некоторые основы выполнения команд оболочки из вашего кода Python.

Функция Python os.system()

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

Это реализуется путем вызова стандартной функции C system() и имеет те же ограничения.

Однако, если команда генерирует какой-либо вывод, он отправляется в стандартный поток вывода интерпретатора. Использование этой команды не рекомендуется. В следующем коде мы попытаемся узнать версию git с помощью системной команды git --version.

import os

cmd = "git --version"

returned_value = os.system(cmd)  # returns the exit code in unix
print('returned value:', returned_value)

Следующий вывод найден в Ubuntu 16.04, где уже установлен git.

git version 2.14.2
returned value: 0

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

Функция subprocess.call() Python

В предыдущем разделе мы видели, что функция os.system() работает нормально. Но это не рекомендуемый способ выполнения команд оболочки. Мы будем использовать модуль подпроцесса Python для выполнения системных команд. Мы можем запускать команды оболочки, используя функцию subprocess.call(). См. следующий код, который эквивалентен предыдущему коду.

import subprocess

cmd = "git --version"

returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
print('returned value:', returned_value)

Функция Python subprocess.check_output()

До сих пор мы выполняли системные команды с помощью python. Но мы не могли манипулировать выводом этих команд. Используя функцию subprocess.check_output(), мы можем сохранить вывод в переменной.

import subprocess

cmd = "date"

# returns output as byte string
returned_output = subprocess.check_output(cmd)

# using decode() function to convert byte string to string
print('Current date is:', returned_output.decode("utf-8"))

Он будет производить вывод, как показано ниже.

Current date is: Thu Oct  5 16:31:41 IST 2017

Итак, в приведенных выше разделах мы обсудили основные идеи о выполнении системной команды python. Но в обучении нет предела. При желании вы можете узнать больше о команде Python System с помощью модуля подпроцесса из официальной документации.