Separar uma linha de comando com str.split() quebra argumentos que contêm espaços ou aspas. shlex.split() aplica regras semelhantes às de shells Unix e shlex.join() produz uma representação legível.

Exemplo prático

import shlex

command_line = 'deploy --message "stable release" --dry-run'
arguments = shlex.split(command_line)
print(arguments)
print(shlex.join(arguments))

Argumentos, não código

Quando executar um programa, prefira uma lista de argumentos com subprocess e shell=False. Use shlex para analisar uma sintaxe que sua aplicação realmente decidiu aceitar, não para liberar um shell completo.

Portabilidade e entrada externa

As regras de quoting são voltadas a shells POSIX e não equivalem ao parsing de todos os ambientes, especialmente Windows. Uma string corretamente escapada ainda pode pedir uma operação perigosa; valide também programa, opções e valores permitidos.

Continue estudando

Leia também subprocess em Python: Execute Comandos com Segurança e Argparse em Python: Crie uma CLI com Subcommands. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.