0Pricing
Python Academy · Aula

Captura da saída

Leia stdout e stderr

Captura da saída é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 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.

Capturando stdout

Para ler o que um comando imprime, passe capture_output=True. O texto aparece no atributo stdout do resultado.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)

Bytes e texto

Por padrão, a saída é composta por bytes. Passe text=True para obter cadeias de caracteres decodificadas, que geralmente é o que você deseja.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))

Removendo a quebra de linha final

A saída de comandos geralmente termina com uma quebra de linha. Use .strip() para removê-la antes de usar o valor.

import subprocess

cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')

Capturando stderr

Os erros normalmente vão para stderr, que é capturado separadamente. Assim, a saída normal e as mensagens de erro permanecem distintas.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())

Usando a saída no código

A saída capturada é apenas uma cadeia de caracteres, portanto você pode analisá-la: separar linhas, converter números ou passá-la ao restante do seu programa.

import subprocess

cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)

Redirecionando stderr para stdout

Para combinar a saída de erro com o fluxo normal, defina stderr=subprocess.STDOUT. Ambos aparecerão em stdout.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
                    stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())

Fornecendo entrada

Envie dados para a entrada padrão de um comando com o argumento input. Aqui, encaminhamos texto para cat.

import subprocess

cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())

Atalho check_output

subprocess.check_output() executa um comando e retorna diretamente seu stdout, gerando uma exceção em caso de falha. É uma forma conveniente de capturar a saída em uma única linha.

import subprocess

out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())

Descartando a saída

Para silenciar um comando, redirecione seus fluxos para subprocess.DEVNULL.

import subprocess

cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)

Lidando com erros e saída

Ao usar check=True, o CalledProcessError gerado ainda contém output e stderr capturados para diagnóstico.

import subprocess

try:
    subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
    print('failed:', e.returncode)
    print('stderr:', e.stderr.strip())

Juntando tudo

Uma função auxiliar típica executa um comando, verifica se ele foi bem-sucedido e retorna texto limpo. Ela encapsula o padrão comum.

import subprocess

def capture(cmd):
    cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
    return cp.stdout.strip()

print(capture(['echo', 'final result']))

Verificação rápida

Teste sua compreensão da captura de saída.

Recapitulação

Você aprendeu a capturar a saída:

  • capture_output=True junto com text=True fornece stdout e stderr como cadeias de caracteres.
  • Combine os fluxos com stderr=subprocess.STDOUT; silencie-os com DEVNULL.
  • Forneça a entrada por meio de input=; check_output é um atalho.
  • Os erros carregam a saída capturada para depuração.

A seguir: lendo variáveis de ambiente e usando o módulo os.

Perguntas Frequentes

A aula “Captura da saída” é grátis?

Sim — o texto completo de “Captura da saída” é 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 “Captura da saída”?

Leia stdout e stderr 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 2 de 4.

Quanto tempo leva a aula “Captura da saída”?

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