python argparse:为每个参数指定一个选项
这就是我想做的:python argparse:为每个参数指定一个选项,python,argparse,Python,Argparse,这就是我想做的: parser.add_argument('-io', nargs = 2, type = int, metavar = ('input','output'), choices = (range(1,65),range(1,5)), help = 'set input -> output.' ) 所以我的输入范围是(1到64),输出范围是(1到4) 谢谢 您应该将其拆分为两个独立的参数: parser.add_arg
parser.add_argument('-io',
nargs = 2,
type = int,
metavar = ('input','output'),
choices = (range(1,65),range(1,5)),
help = 'set input -> output.'
)
所以我的输入范围是(1到64),输出范围是(1到4)
谢谢 您应该将其拆分为两个独立的参数:
parser.add_argument('-i', type=int, metavar='input', choices=range(1,65), help='set input.')
parser.add_argument('-o', type=int, metavar='output', choices=range(1,5), help='set output.')
或者,如果确实要使用一个参数,可以手动执行检查:
parser.add_argument('--io', nargs=2, type=int, metavar=('input', 'output'), help='set input (1 to 64) -> output (1 to 4).')
# ...
args = parser.parse_args(argv[1:])
input, output = args.io
if input < 1 or 64 < input:
raise ValueError("input:{!r} must be between 1 and 64.".format(input))
if output < 1 or 4 < output:
raise ValueError("output:{!r} must be between 1 and 4.".format(output))
parser.add_参数('-io',nargs=2,type=int,metavar=('input','output'),help='set input(1到64)->output(1到4)。)
# ...
args=parser.parse_args(argv[1:])
输入,输出=args.io
如果输入<1或64<输入:
raise VALUERROR(“输入:{!r}必须介于1和64之间。”。格式(输入))
如果输出<1或4<输出:
raise VALUERROR(“输出:{!r}必须介于1和4之间。”。格式(输出))
最简单的方法是将它们作为单独的参数添加到解析器中
add_参数('-i',type=int,metavar='input',choices=range(1,65),help='set input')
parser.add_参数('-o',type=int,metavar='output',choices=range(1,5),help='set output.')您真的应该将其拆分为多行,没有人想滚动水平方向。第三个选项是自定义的
类型。但我更喜欢你的建议。