Execução de comandos com subprocess
Execute programas externos
Execução de comandos com subprocess é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
O que é subprocess?
O módulo subprocess permite que seu programa Python execute comandos externos e outros programas, assim como quando você os digita em um terminal.
import subprocess
result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)Conceitos básicos de subprocess.run
subprocess.run() é o ponto de entrada recomendado. Você passa o comando como uma lista de argumentos: primeiro o nome do programa e depois cada argumento separadamente.
import subprocess
result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)Por que uma lista, e não uma cadeia de caracteres?
Passar uma lista evita que o interpretador de comandos analise seu comando, prevenindo erros de aspas e riscos de injeção no interpretador. Cada elemento é um argumento.
import subprocess
# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])O objeto CompletedProcess
run() retorna um CompletedProcess que contém args, returncode e, se capturada, a saída. O código 0 significa sucesso.
import subprocess
cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)Verificando códigos de retorno
Um código de retorno diferente de zero geralmente significa que o comando falhou. Você pode verificá-lo manualmente após a chamada.
import subprocess
cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
print('command failed with', cp.returncode)Gerando uma exceção em caso de falha com check=True
Passe check=True para fazer com que run() gere automaticamente CalledProcessError quando o comando terminar com um código diferente de zero.
import subprocess
try:
subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
print('failed with code', e.returncode)Passando argumentos
Argumentos adicionais do comando são apenas mais itens da lista. Aqui, listamos um diretório em formato detalhado.
import subprocess
subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')Definindo um limite de tempo
Use timeout para interromper um comando que demore demais. Isso gera TimeoutExpired.
import subprocess
try:
subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
print('command took too long, aborted')Diretório de trabalho
O argumento cwd executa o comando em um diretório específico sem alterar o próprio diretório de trabalho do seu programa.
import subprocess
subprocess.run(['pwd'], cwd='/tmp')A opção shell=True
Com shell=True, você passa uma única cadeia de caracteres de comando que o interpretador interpreta. Isso habilita tubulações e padrões curinga, mas é arriscado com entradas não confiáveis. Prefira a forma de lista.
import subprocess
subprocess.run('echo hello && echo world', shell=True)Evitando os.system
O antigo os.system apenas retorna um código de saída e não oferece passagem segura de argumentos nem captura da saída. subprocess.run o substitui em todo código novo.
import subprocess
# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)Verificação rápida
Teste sua compreensão da execução de comandos.
Recapitulação
Você aprendeu a executar comandos com subprocess:
subprocess.run([...])executa um programa externo com segurança.- Ele retorna um
CompletedProcesscomreturncode. check=Truegera uma exceção em caso de falha;timeoutinterrompe comandos lentos.- Prefira a forma de lista a
shell=True.
A seguir: capturando a saída do comando.
Perguntas Frequentes
A aula “Execução de comandos com subprocess” é grátis?
Sim — o texto completo de “Execução de comandos com subprocess” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Execução de comandos com subprocess”?
Execute programas externos Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Execução de comandos com subprocess”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Execução de comandos com subprocess
- Captura da saída
- Ambiente e módulo os
- shutil para operações com arquivos