Как добавить необязательный аргумент, который имеет значение по умолчанию и может быть вызван с другим значением или который может быть вызван без значения (и имеет значение по умолчанию). Так что у меня этот аргументPython argparse необязательные аргументы без аргумента (не хранить true)
parser.add_argument("-a", "--automatic", type=int, default=8)
, и я хотел бы быть в состоянии назвать. My_script.py -a
если я хочу автоматический режим с 8 как аргумент, но я также хочу сделать, например, My_script.py -a 10
, если я хочу автоматический режим с 10 (или любым другим числом) в качестве аргумента. Проблема в том, что я получаю ожидаемый один аргумент, когда я запускаю My_script.py -a
. Если я не хочу указывать 8, мне также не разрешено указывать -a, а затем мне нужно запустить My_script.py
, чего я не хочу.
Если передача ничего не эквивалентна передаче '-a' без значения, зачем разрешать последнее? Это просто облегчает ошибки/двусмысленность в разборе. 'nargs = '?' '(вы должны вручную заменить' None' на '8', когда это произойдет, потому что если предоставлено без аргумента, это не случай по умолчанию, поэтому он хранит' None'), но это плохая идея. – ShadowRanger
Это кажется неоднозначным. Как должен аналитик определить, является ли вещь после '-a' значением для опции -a' или позиционного аргумента? Независимо от того, поддерживает или нет argparse, я не думаю, что это хороший интерфейс. – user2357112
Играйте с 'nargs = '?'' И дайте ему параметры 'default' и' const'. – hpaulj