Eu quero ter algumas opções no módulo argparse, como, por exemplo, --pm-exportquando tento usá-lo, como args.pm-exportrecebo o erro de que não há atributo pm. Como posso contornar esse problema? É possível ter -opções de linha de comando?
Para ações de argumento opcionais, o valor de dest é normalmente inferido a partir das seqüências de opções. ArgumentParser gera o valor de dest tomando a primeira cadeia de opções de comprimento e despojamento a inicial --corda . Quaisquer -caracteres internos serão convertidos em _caracteres para garantir que a sequência seja um nome de atributo válido
O relatório de bug do Python relevante: bugs.python.org/issue15125 . argparseusa setattre getattr, portanto, os destnomes não precisam ser dotnomes de atributos válidos . O usuário também pode usar getattr.
hpaulj
5
Eu apenas fariapositional_arg = getattr( parser, 'positional-arg' )
Ciro Santilli #
1
Exatamente o que eu precisava - eu fiz isso de trás para frente metavare não conseguia entender por que não estava funcionando. Obrigado!
argparse
usasetattr
egetattr
, portanto, osdest
nomes não precisam serdot
nomes de atributos válidos . O usuário também pode usargetattr
.positional_arg = getattr( parser, 'positional-arg' )
metavar
e não conseguia entender por que não estava funcionando. Obrigado!Os traços são convertidos em sublinhados:
fonte