這就是我想要做的:蟒蛇-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)。
謝謝!
這就是我想要做的:蟒蛇-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)。
謝謝!
你應該把它分割成2個獨立的參數:
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))
第三個選項是一個自定義'類型'。但我更喜歡你的建議。 – hpaulj
最簡單的方法是將這些作爲單獨的參數添加到解析器中。
parser.add_argument( ' - I',類型= INT,metavar = '輸入',選擇=範圍(1,65),幫助= '設置輸入')
parser.add_argument(' - O- ',type = int,metavar ='output',choices = range(1,5),help ='set output。')
你真的應該把它分成多行,沒有人想水平滾動 – slezica
謝謝大家! – Federico