Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python argparse:为每个参数指定一个选项_Python_Argparse - Fatal编程技术网

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.')

您真的应该将其拆分为多行,没有人想滚动水平方向。第三个选项是自定义的
类型。但我更喜欢你的建议。