Comando do Sistema Python – os.system(), subprocess.call()

Neste tutorial, vamos aprender sobre o Comando do Sistema Python. Anteriormente, aprendemos sobre Número Aleatório em Python.

Comando do Sistema Python

Ao criar um programa em Python, você pode precisar executar alguns comandos de shell para o seu programa. Por exemplo, se você usa o IDE Pycharm, pode notar que há uma opção para compartilhar seu projeto no GitHub. E provavelmente sabe que a transferência de arquivos é feita pelo git, que é operado usando a linha de comando. Portanto, o Pycharm executa alguns comandos de shell em segundo plano para fazer isso. No entanto, neste tutorial, vamos aprender o básico sobre como executar comandos de shell a partir do seu código Python.

Função os.system() do Python

Podemos executar comandos de sistema usando a função os.system(). De acordo com o documento oficial, foi dito que

Isso é implementado chamando a função C padrão system(), e tem as mesmas limitações.

No entanto, se o comando gerar qualquer saída, ela será enviada para o fluxo de saída padrão do interpretador. Não é recomendado usar este comando. No código a seguir, tentaremos saber a versão do git usando o comando do sistema git --version.

import os

cmd = "git --version"

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

A seguinte saída foi encontrada no Ubuntu 16.04, onde o git já está instalado.

git version 2.14.2
returned value: 0

Observe que não estamos imprimindo a saída do comando de versão do git no console, está sendo impresso porque o console é o fluxo de saída padrão aqui.

Função subprocess.call() do Python

Na seção anterior, vimos que a função os.system() funciona bem. Mas não é a maneira recomendada de executar comandos de shell. Usaremos o módulo subprocess do Python para executar comandos do sistema. Podemos executar comandos de shell usando a função subprocess.call(). Veja o código a seguir, que é equivalente ao código anterior.

import subprocess

cmd = "git --version"

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

E a saída também será a mesma.

Função subprocess.check_output() do Python

Até agora, executamos os comandos do sistema com a ajuda do Python. Mas não conseguimos manipular a saída produzida por esses comandos. Usando a função subprocess.check_output(), podemos armazenar a saída em uma variável.

import subprocess

cmd = "date"

# retorna a saída como uma sequência de bytes
returned_output = subprocess.check_output(cmd)

# usando a função decode() para converter a sequência de bytes em uma string
print('Current date is:', returned_output.decode("utf-8"))

Isso produzirá uma saída como a seguinte

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

Portanto, nas seções acima, discutimos ideias básicas sobre a execução de comandos do sistema em Python. Mas não há limite para aprender. Se desejar, você pode aprender mais sobre o comando do sistema Python usando o módulo subprocess na documentação oficial.

Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call