Python argparse: значение по умолчанию или указанное значение



Я хотел бы иметь необязательный аргумент, который будет по умолчанию иметь значение, если только флаг присутствует без указанного значения, но хранить указанное Пользователем значение вместо значения по умолчанию, если пользователь указывает значение. Уже есть действие для этого?



пример:



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


Я могу создать действие, но хотел посмотреть, есть ли существующий способ сделать это.

467   1  

1 ответ:

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='?' означает 0 или 1 аргументы
  • const=1 задает значение по умолчанию, когда нет аргументов 0
  • type=int преобразует аргумент в int

если вы хотите test.py установить example к 1, даже если нет --example указывается, затем включить default=1. То есть, с

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

затем

% test.py 
Namespace(example=1)

Comments

    Ничего не найдено.