Мне интересно, как я могу сделать один аргумент, требуемый при задании одного флага, и необязательный, если этот флаг не указан?Python Argparse: как сделать аргумент требуемым тогда и только тогда, когда задан один флаг?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--convert', action = 'store_true')
parser.add_argument('-l', '--lookup', action = 'store_true')
parser.add_argument('name', type = str)
args = parser.parse_args()
if args.name:
print(args.name)
if args.convert:
print ("convert now!")
Например, в приведенных выше кодов, я хочу name
быть необходимы только тогда, когда -c
дается. Когда я запускаю программу только с -l
, то есть ошибка:
$ python3 test.py -l
usage: test.py [-h] [-c] [-l] name
test.py: error: the following arguments are required: name
Я попытался использовать аргумент группы разделить аргументы на две группы 1. -c
и name
; 2. -l
, но это действительно не сработало.
Любые предложения приветствуются!
Спасибо за подробное объяснение, это очень помогает! Я могу учиться у субпараторов самостоятельно :) –