可选关键字参数 - argparse
Optional keyword arguments - argparse
我正在尝试制作一个程序,其中有 3 个不同的关键字参数输入选项(用户必须选择其中一个):
1) 第一个是当用户输入两个整数时,程序将这样调用:
python myProgram.py -s 3 -p 9
2) 第二个是当用户输入一串 1 和 0 时:
python myProgram.py -r 1101011010
3) 第三个输入与第二个输入相同,但存储在不同的变量中
python myProgram.py -l 1101011010
我该如何实施?我读过 argparse 和 nargs = '?'但是我很困惑,我不知道该怎么做。
您可以使用 mutual exclusion 创建您的 3 个选项(并根据需要标记组)。如果存在 -p
,则必须手动测试是否使用 -s
,但是:
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-s', type=int)
parser.add_argument('-p', type=int)
def binary(value):
# just test if the value is a valid binary string
try:
int(value, 2)
except ValueError:
raise argparse.ArgumentTypeError('{!r} is not a valid binary value'.format(value))
return value
group.add_argument('-r', type=binary)
group.add_argument('-l', type=binary)
args = parser.parse_args()
if args.s and args.p is None:
parser.error('You must use -p when -s is selected')
我正在尝试制作一个程序,其中有 3 个不同的关键字参数输入选项(用户必须选择其中一个):
1) 第一个是当用户输入两个整数时,程序将这样调用:
python myProgram.py -s 3 -p 9
2) 第二个是当用户输入一串 1 和 0 时:
python myProgram.py -r 1101011010
3) 第三个输入与第二个输入相同,但存储在不同的变量中
python myProgram.py -l 1101011010
我该如何实施?我读过 argparse 和 nargs = '?'但是我很困惑,我不知道该怎么做。
您可以使用 mutual exclusion 创建您的 3 个选项(并根据需要标记组)。如果存在 -p
,则必须手动测试是否使用 -s
,但是:
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-s', type=int)
parser.add_argument('-p', type=int)
def binary(value):
# just test if the value is a valid binary string
try:
int(value, 2)
except ValueError:
raise argparse.ArgumentTypeError('{!r} is not a valid binary value'.format(value))
return value
group.add_argument('-r', type=binary)
group.add_argument('-l', type=binary)
args = parser.parse_args()
if args.s and args.p is None:
parser.error('You must use -p when -s is selected')