Executar o comando Bash em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Execute comandos Bash em Python usando o método run() do módulo subprocess
  2. Executar comandos Bash em Python usando o método Popen() do módulo subprocess
Executar o comando Bash em Python

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