O módulo subprocess permite você criar novos processos através de Python e assim se conectar aos seus inputs/outputs/erros pipes e obter seu código de retorno.
Rodar comando do shell:
Para executar um comando sem interagir com ele faça a chamada call() assim como faria com os.system()
import subprocess
# Simple command
subprocess.call(['ls', '-1'], shell=True)
Com o comando acima teremos a seguinte saída:
$ python subprocess_os_system.py
__init__.py
index.rst
interaction.py
repeater.py
signal_child.py
signal_parent.py
subprocess_check_call.py
subprocess_check_output.py
subprocess_check_output_error.py
subprocess_check_output_error_trap_output.py
subprocess_os_system.py
subprocess_pipes.py
subprocess_popen2.py
subprocess_popen3.py
subprocess_popen4.py
subprocess_popen_read.py
subprocess_popen_write.py
subprocess_shell_variables.py
subprocess_signal_parent_shell.py
subprocess_signal_setsid.py
E desde que tenhamos shell=True teremos acesso as variáveis de shell também.
import subprocess
# Command with shell expansion
subprocess.call('ls -1 $HOME', shell=True)
Dessa forma teremos a saída:
$ python subprocess_shell_variables.py
/home/maltzsama
Agora já sabemos executar um comando externo do sistema operacional ou mesmo um executavel qualquer usando subprocess, no próximo post veremos como fazer tratamento de erros em subprocess.
fonte: doughellmann.com