sexta-feira, maio 27, 2011

Subprocess com Python - Executando comando externo- parte 1

Comunicão entre processos com Python.
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