【发布时间】:2017-06-01 14:52:52
【问题描述】:
我正在尝试将parser = argparse.ArgumentParser 用于我编写的 lil 程序。
程序接受EITHER(一个txt文件的路径)OR(opt1&&opt2&&opt3)作为输入。
意思是如果用户想使用 txt 文件作为输入,他不能提供 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 组得到满足。
【问题讨论】:
-
请展示你的尝试,并解释它是如何不充分的。
-
编辑了第一篇文章。谢谢
-
那么您的标题具有误导性;你想要一组选项的全部或全部。
-
是的,但我只想要一组
-
通过将
opt1、opt2和opt3放在same mulually_exclusive_group中,您保证只能选择其中一个。
标签: argparse