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