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
Я могу создать действие, но хотел посмотреть, есть ли существующий способ сделать это.
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задает значение по умолчанию, когда нет аргументов 0type=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