Executar o comando Bash em Python
-
Execute comandos Bash em Python usando o método
run()do módulosubprocess -
Executar comandos Bash em Python usando o método
Popen()do módulosubprocess
Este tutorial explicará várias maneiras de executar comandos bash em Python. Bash é um interpretador de shell ou linguagem de comando usado nos sistemas operacionais Linux e Unix. E o comando bash é uma instrução de um usuário para o sistema operacional para realizar uma tarefa específica, como o comando cd para alterar o diretório atual, o comando mkd para criar um novo diretório e o comando ls para listar arquivos e subdiretórios em um diretório, etc.
Execute comandos Bash em Python usando o método run() do módulo subprocess
O método run() do módulo subprocess recebe o comando passado como uma string. Para obter a saída ou o erro de saída do comando, devemos definir o argumento stdout e o argumento stderr para PIPE. O método run retorna um processo concluído contendo stdout, stderr e returncode como atributos.
O código de exemplo de código demonstra como usar o método run() para executar um comando bash em Python.
from subprocess import PIPE
comp_process = subprocess.run("ls", stdout=PIPE, stderr=PIPE)
print(comp_process.stdout)
Executar comandos Bash em Python usando o método Popen() do módulo subprocess
O método Popen() do módulo subprocess tem funcionalidade semelhante ao método run(), mas é complicado de usar. O método Popen(), ao contrário do método run(), não retorna um objeto de processo concluído como saída, e o processo iniciado pelo método Popen() precisa ser tratado separadamente, o que torna difícil usar.
Em vez do processo concluído, o método Popen() retorna um objeto de processo como saída. O processo retornado precisa ser eliminado usando o método process.kill() ou process.terminate().
Como o método run(), precisamos definir os argumentos stdout e stderr do Popen() para obter a saída e o erro do comando. E a saída e o erro podem ser acessados por meio do objeto de processo retornado usando o método process.communicate.
O exemplo de código abaixo demonstra como executar um comando bash usando o método Popen() e como obter os valores stdout e stderr e, em seguida, eliminar o processo em Python:
from subprocess import PIPE
process = subprocess.Popen("ls", stdout=PIPE, stderr=PIPE)
output, error = process.communicate()
print(output)
process.kill