Python argparse: valeur par défaut ou valeur spécifiée

Je voudrais avoir un argument optionnel qui par défaut sera une valeur si seul l’indicateur est présent avec aucune valeur spécifiée, mais stocker une valeur spécifiée par l’utilisateur au lieu de la valeur par défaut si l’utilisateur spécifie une valeur. Y a-t-il déjà une action disponible pour cela?

Un exemple:

python script.py --example # args.example would equal a default value of 1 python script.py --example 2 # args.example would equal a default value of 2 

Je peux créer une action, mais je voulais voir s’il existait un moyen de le faire.

 import argparse parser = argparse.ArgumentParser() parser.add_argument('--example', nargs='?', const=1, type=int) args = parser.parse_args() print(args) 

 % test.py Namespace(example=None) % test.py --example Namespace(example=1) % test.py --example 2 Namespace(example=2) 

  • nargs='?' signifie des arguments 0 ou 1
  • const=1 définit la valeur par défaut lorsqu’il y a 0 argument
  • type=int convertit l’argument en int

Si vous souhaitez que test.py définisse l’ example sur 1 même si aucun --example n’est spécifié, alors incluez default=1 . C’est à dire avec

 parser.add_argument('--example', nargs='?', const=1, type=int, default=1) 

puis

 % test.py Namespace(example=1)