Réponses:
Comme indiqué dans la argparse
documentation :
Pour les actions d'argument facultatives, la valeur de dest est normalement déduite des chaînes d'options. ArgumentParser génère la valeur de dest en prenant la première longue chaîne d'options et en supprimant la
--
chaîne initiale . Tous les-
caractères internes seront convertis en_
caractères pour s'assurer que la chaîne est un nom d'attribut valide
Vous devriez donc utiliser args.pm_export
.
Malheureusement, le remplacement d'un tiret par un trait de soulignement ne fonctionne pas pour les arguments de position (non préfixés par --
) comme
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
Vous devez donc utiliser le 1er argument add_argument()
comme nom d'attribut et metavar
kwarg pour définir à quoi il doit ressembler dans l'aide:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
positional_arg = getattr( parser, 'positional-arg' )
metavar
et je ne pouvais pas comprendre pourquoi cela ne fonctionnait pas. Merci!
Les tirets sont convertis en traits de soulignement:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo-bar')
args = pa.parse_args(['--foo-bar', '24'])
print args # Namespace(foo_bar='24')
argparse
utilisesetattr
etgetattr
, donc lesdest
noms ne doivent pas nécessairement être desdot
noms d'attributs valides . L'utilisateur peut également utilisergetattr
.