web-dev-qa-db-fra.com

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

J'aimerais avoir un argument optionnel qui par défaut sera une valeur si seul l'indicateur est présent sans valeur spécifiée, mais stocke une valeur spécifiée par l'utilisateur au lieu de la valeur par défaut si l'utilisateur spécifie une valeur. Existe-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.

138
Rob
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 0 ou 1 arguments
  • const=1 définit la valeur par défaut quand il y a 0 argument
  • type=int convertit l'argument en int

Si vous voulez que test.py définisse example sur 1 même si aucun --example n'est spécifié, ajoutez default=1. C'est-à-dire avec

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

ensuite

% test.py 
Namespace(example=1)
228
unutbu