Réponses:
Comme indiqué dans la argparsedocumentation :
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 metavarkwarg 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' )
metavaret 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')
argparseutilisesetattretgetattr, donc lesdestnoms ne doivent pas nécessairement être desdotnoms d'attributs valides . L'utilisateur peut également utilisergetattr.