Migrando código optparse para
argparse
Release 3.13.3
Guido van Rossum and the Python development team
abril 11, 2025
Python Software Foundation
Email:
[email protected]Sumário
O mó dulo argparse oferece vá rios recursos de nível mais alto nã o fornecidos nativamente pelo mó dulo optparse,
incluindo:
• Tratando argumentos posicionais.
• Prover suporte a subcomandos.
• Permitir prefixos alternativos de opçõ es como + e /.
• Manipular argumentos de estilo “zero ou mais” e “um ou mais”.
• Produzir mensagens de uso mais informativas.
• Fornecer uma interface muito mais simples para type e action personalizados.
Originalmente, o mó dulo argparse tentou manter a compatibilidade com optparse. No entanto, as diferenças
fundamentais de design entre suportar o processamento de opçõ es de linha de comando declarativas (enquanto deixa
o processamento de argumentos posicionais para o có digo da aplicaçã o) e suportar opçõ es nomeadas e argumentos
posicionais na interface declarativa significam que a API divergiu daquela de optparse ao longo do tempo.
Conforme descrito em choosing-an-argument-parser, as aplicaçõ es que atualmente usam optparse e estã o satisfei-
tos com a forma como ele funciona podem continuar usando optparse.
Os desenvolvedores de aplicaçõ es que estã o pensando em migrar també m devem revisar a lista de diferenças com-
portamentais intrínsecas descritas nessa seçã o antes de decidir se a migraçã o é desejá vel ou nã o.
Para aplicaçõ es que optam por migrar de optparse para argparse, as seguintes sugestõ es devem ser ú teis:
• Substituir todas as chamadas de optparse.OptionParser.add_option() por chamadas de
ArgumentParser.add_argument().
• Substituir (options, args) = parser.parse_args() por args = parser.parse_args() e adi-
cionar chamadas adicionais a ArgumentParser.add_argument() para os argumentos posicionais. Tenha
em mente que o que anteriormente era chamado de options, agora no contexto do argparse é chamado de
args.
• Substituir optparse.OptionParser.disable_interspersed_args() usando
parse_intermixed_args() em vez de parse_args().
• Substituir açõ es de funçã o de retorno e argumentos nomeados callback_* por argumentos type ou action.
1
• Substituir nomes de strings para argumentos nomeados type pelos objetos de tipo correspondentes (por exem-
plo, int, float, complex, etc).
• Substituir
optparse.Values por Namespace e optparse.OptionError e optparse.
OptionValueError por ArgumentError.
• Substituir strings com argumentos implícitos tal como %default ou %prog pela sintaxe padrã o do Python
para usar dicioná rios para formatar strings, ou seja, %(default)s e %(prog)s.
• Substituir o argumento version do construtor do OptionParser por uma chamada a parser.
add_argument('--version', action='version', version='<the version>').