Как получить два позиционных аргумента, если в argparse не установлен optinal - PullRequest
1 голос
/ 29 марта 2020

Я хочу написать команду argparse, которая нуждается в двух позиционных аргументах, когда я не устанавливаю необязательный аргумент. В моем случае это как будто я хочу вызвать его с двумя необходимыми параметрами, но когда я говорю python3 test.py -gui, я хочу, чтобы вам не нужны эти два аргумента, потому что тогда вы используете gui.

Thx

1 Ответ

2 голосов
/ 29 марта 2020

Это то, что я предлагал в комментариях:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--gui', action='store_true', help="use GUI")
parser.add_argument('args', nargs='*')
cmdargs = parser.parse_args()
nargs = len(cmdargs.args)
nargs_expected = 0 if cmdargs.gui else 2
if nargs != nargs_expected:
    parser.error(f"{nargs_expected} arguments were expected, but got {nargs}")
...