使用 click 包:使选项成为“int”的选择

Ram*_*hum 2 python click

我试图click.option在数字 和 之间0做出1选择2。我试过这个:

@click.Option('--verbosity', default=1, type=click.Choice([0, 1, 2]))
def f():
    # ...
    pass
Run Code Online (Sandbox Code Playgroud)

但我得到了例外TypeError: sequence item 0: expected str instance, int found。我想click只期望click.Choice. 有什么办法让它接受整数吗?我知道我可以在收到后手动转换为 int ,但如果有一种惯用的方式来接收选择int,那就更好了。

Ami*_*hum 5

您可以使用IntRange(min=0, max=2)

class click.IntRange(min=None, max=None, clamp=False)

该参数的工作方式与 click.INT 类似,但将值限制在某个范围内。如果值超出范围,默认行为会失败,但也可以默默地将其夹在两个边缘之间。

来自文档。