Atualizando código optparse¶
Originalmente, o módulo argparse
tentou manter a compatibilidade com optparse
. No entanto, optparse
era difícil de estender de forma transparente, particularmente com as mudanças necessárias para prover suporte a especificadores nargs=
e melhores mensagens de uso. Quando quase tudo em optparse
tinha sido copiado e colado ou corrigido em tempo de execução, não mais parecia prático tentar manter a compatibilidade com versões anteriores.
O módulo argparse
melhora em comparação ao módulo optparse
em vários aspectos, 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
eaction
personalizados.
Um caminho de atualização parcial de optparse
para argparse
:
Substituir todas as chamadas de
optparse.OptionParser.add_option()
por chamadas deArgumentParser.add_argument()
.Substituir
(options, args) = parser.parse_args()
porargs = parser.parse_args()
e adicionar chamadas adicionais aArgumentParser.add_argument()
para os argumentos posicionais. Tenha em mente que o que anteriormente era chamado deoptions
, agora no contexto doargparse
é chamado deargs
.Substituir
optparse.OptionParser.disable_interspersed_args()
usandoparse_intermixed_args()
em vez deparse_args()
.Substituir ações de função de retorno e argumentos nomeados
callback_*
por argumentostype
ouaction
.Substituir nomes de strings para argumentos nomeados
type
pelos objetos de tipo correspondentes (por exemplo, int, float, complex, etc).Substituir
optparse.Values
porNamespace
eoptparse.OptionError
eoptparse.OptionValueError
porArgumentError
.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 aparser.add_argument('--version', action='version', version='<the version>')
.