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.