Criar conta grátis

Python para Automação e Scripts

15. Subprocessos e comandos externos

15º capítulo da apostila Python para Automação e Scripts: explicação simples e contínua de Subprocessos e comandos externos, com conceitos conectados, exemplo comentado, revisão e mapa mental.

8 min de leitura40 questões para praticarRevisado em 14/09/2026

Muitas tarefas precisam chamar programas do sistema. Essa integração deve controlar argumentos, tempo, saída e código de retorno para não transformar conveniência em risco.

Este é o capítulo 15 de 25 da apostila Python para Automação e Scripts. Ele aproveita a base construída em Testes e isolamento de dependências e dá mais um passo no desenvolvimento da automação. Ao final, estaremos preparados para estudar Automação de sistemas e portabilidade.

Começando pela situação real

Agora o programa começa a conversar com pessoas e com o ambiente. Argumentos, configuração, registros e testes tornam seu comportamento previsível para quem executa e para quem precisa corrigir um problema. Em Subprocessos e comandos externos, observaremos como essa parte se liga ao conjunto, mantendo claros o contrato de entrada, o processamento, os efeitos e a conferência do resultado.

Ao ler os exemplos, não tente decorar chamadas isoladas. Pergunte o que entra, qual estado muda, o que sai e como a falha aparece. Essa sequência aproxima a sintaxe do problema que ela resolve e cria uma base que continuará útil quando a biblioteca ou o ambiente mudar.

Subprocess.run

O primeiro conceito do capítulo é Subprocess.run. Ele fornece a base para interpretar os demais recursos sem confundir o nome de uma ferramenta com o comportamento que ela realmente oferece.

Subprocess.run executa comando e aguarda conclusão, oferecendo captura, timeout e verificação de status. Em termos simples, essa definição descreve uma promessa feita pelo programa: dadas certas condições, esperamos um comportamento específico. Antes de usar o recurso, identifique essas condições e pense no que deveria acontecer tanto no caminho normal quanto diante de uma entrada inadequada.

Na prática, passar lista de argumentos, check=True e timeout quando apropriado. Transforme essa orientação em passos visíveis: defina a entrada, aplique a operação, observe a saída e registre a condição de sucesso. Assim, o código continua ligado à finalidade da tarefa.

Uma forma de conferir o entendimento é observar o seguinte critério: teste confirma argv exato, status, stdout, stderr e timeout. Esse critério deve aparecer em um teste, em uma saída controlada ou em outro efeito que possa ser reproduzido.

Shell injection

Depois de compreender Subprocess.run, podemos avançar para Shell injection. As duas ideias se conectam porque uma automação precisa preservar o contrato à medida que os dados percorrem novas etapas.

Shell injection ocorre quando dados controláveis alteram a sintaxe interpretada por um shell. Em termos simples, essa definição descreve uma promessa feita pelo programa: dadas certas condições, esperamos um comportamento específico. Antes de usar o recurso, identifique essas condições e pense no que deveria acontecer tanto no caminho normal quanto diante de uma entrada inadequada.

Continue lendo de graça

O capítulo inteiro está liberado no plano gratuito

Criar conta leva menos de um minuto e não pede cartão. Você destrava o texto completo, o mapa mental, o PDF para estudar off-line e ainda resolve questões inéditas todo dia.

Leu o resumo? Agora pratique.

São 40 questões inéditas de Subprocessos e comandos externos, todas comentadas alternativa por alternativa.

Criar conta grátis e praticar

Você volta para este capítulo depois de criar a conta.

Fontes consultadas

  • https://docs.python.org/3/library/subprocess.html
  • Python Software Foundation — documentação oficial do Python 3: https://docs.python.org/3/
  • Python Packaging Authority — Python Packaging User Guide: https://packaging.python.org/en/latest/
  • Python Enhancement Proposals: https://peps.python.org/
  • Acervo publicado: 40 questões deste tópico integralmente cobertas no capítulo.