Je veux avoir certaines options dans le module argparse telles que --pm-export
cependant quand j'essaye de l'utiliser comme args.pm-export
Je vois l'erreur qu'il n'y a pas d'attribut pm
. Comment puis-je contourner ce problème? Est-il possible d'avoir -
dans les options de ligne de commande?
Comme indiqué dans la argparse
docs :
Pour les actions d'argument optionnel, la valeur de dest est normalement déduite des chaînes d'option. ArgumentParser génère la valeur de dest en prenant la première chaîne d'option longue et en supprimant la valeur initiale
--
chaîne . Toute interne-
caractères seront convertis en_
caractères pour s’assurer que la chaîne est un nom d’attribut valide
Donc, vous devriez utiliser args.pm_export
.
Malheureusement, le remplacement par tiret-soulignement ne fonctionne pas pour les arguments positional (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>)
Donc, vous devriez utiliser le dernier argument de add_argument()
comme nom d'attribut et metavar
kwarg pour définir son apparence 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>])
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')