Я знаю, что подобные вопросы задавали раньше, но я не мог найти точного (также я не мог понять концепцию «nargs» или «subparse» и как это было бы обратиться к моему делу)Добавить аргументы в argparse в зависимости от значения начальных аргументов
Я хочу что-то вроде:
parser = argparse.ArgumentParser()
parser.add_argument('-mode', choices=['download', 'upload'], required=True)
parser.add_argument('-d', required=True)
args = parser.parse_args()
if args.mode == 'download':
parser.add_argument('-f', required=True)
args = parser.parse_args()
так требуется -f
аргумент только тогда, когда -mode
является download
иначе оно не должно быть разобрано
'argparse' не имеет взаимно включающих аргументов, о чем вы говорите. Вместо этого вы должны сделать не '-d', а' -f', но включить в сообщение об использовании тот факт, что либо оба, либо оба должны быть указаны, а затем убедитесь, что оба '-d' и' -f' указываются, если они есть. – 2rs2ts
согласен с 2rs2ts – Jblasco
Вы можете использовать [подпараметры] (http://docs.python.org/dev/library/argparse.html#argparse.ArgumentParser.add_subparsers), так что 'download' становится подкомандой с собственным набором (обязательных) флагов. – miku