0Pricing
Python Academy · Aula

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 CompletedProcess com returncode.
  • check=True gera uma exceção em caso de falha; timeout interrompe 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

  1. Execução de comandos com subprocess
  2. Captura da saída
  3. Ambiente e módulo os
  4. shutil para operações com arquivos
← Voltar para Python Academy