Я пытаюсь использовать parser = argparse.ArgumentParser
для программы lil, которую я пишу.Использование argparse для принятия только одной группы требуемых аргументов
Программа принимает в качестве входных данных EITHER
(
пути к текстовому файлу )
OR
(
opt1 &&
opt2 &&
opt3 )
.
Значение, если пользователь хочет использовать текстовый файл в качестве входных данных он не может обеспечить ни один из opt
и если он предоставил opt
- он должен предоставить все 3 и не может обеспечить a path to a txt file
.
Я пробовал использовать add_mutually_exclusive_group
, но не знаю, как это сделать, потому что вторая группа аргументов - это сама группа.
Это то, что я пытался до сих пор:
import argparse
parser = argparse.ArgumentParser(description='this is the description',)
root_group = parser.add_mutually_exclusive_group()
group_list = root_group.add_mutually_exclusive_group()
group_list.add_argument('-path', help='path to the txt file')
group_list = root_group.add_mutually_exclusive_group()
group_list.add_argument('-opt1', help='opt1')
group_list.add_argument('-opt2', help='opt2')
group_list.add_argument('-opt3', help='opt3')
args = parser.parse_args()
-
python tests.py -path txt -opt1 asdasd
usage: tests.py [-h] [[-path PATH] [-opt1 OPT1 | -opt2 OPT2 | -opt3 OPT3]
tests.py: error: argument -opt1: not allowed with argument -path
path
не допускается ни с одной из opt
- это именно то, что я хочу.
Но я хочу, чтобы, если пользователь поставил даже 1 opt
, он должен будет предоставить все из них.
Я также хочу, чтобы по крайней мере 1 группа была удовлетворена.
Пожалуйста, покажите, что вы пробовали, и объясните, как это было недостаточно. –
отредактировал первое сообщение. thanks –
Ваше название вводит в заблуждение; вы хотите все или ничего из набора опций. –