Проверьте наличие аргумента и установите соответствующее значение - PullRequest
2 голосов
/ 25 апреля 2019

Я пытаюсь написать программу на Python, которая требует проверки наличия аргумента и установки соответствующего значения в программе.Например:

abc -a -b

И -a, и -b являются необязательными.Но -a предоставляет значение по умолчанию некоторого номера порта (скажем, порта 1234) для программы.Но если присутствует -b, то программа должна по умолчанию использовать другой номер порта (скажем, 2215).

Как я могу сделать это с argparse?

1 Ответ

3 голосов
/ 25 апреля 2019

Вы можете сделать это так:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-a',
                    action='store_const',
                    const=1234,
                    dest='port')

parser.add_argument('-b',
                    action='store_true',
                    dest='port_override')

args = parser.parse_args()

if args.port_override:
    args.port = 2215

print(args.port)

Это говорит argparse, что если указано -a, то значение 1234 будет сохранено в args.port. Также, если указано -b, то args.port_override будет True. После разбора аргумента мы можем проверить значение args.port_override.

Вы тоже можете сделать это:

parser.add_argument('-b',
                    action='store_const',
                    const=2215
                    dest='port')

В этом случае, в зависимости от того, что наступит вторым, приоритет отменит другой.

...