相关疑难解决方法(0)

python中的互斥选项组单击

如何在Click中创建互斥选项组?我想要接受标志"--all"或者使用像"--color red"这样的参数选项.

python python-click

18
推荐指数
3
解决办法
4528
查看次数

仅当参数等于某值时才单击密码选项

在单击中,我正在定义此命令:

@click.command('time', short_help='Timesheet Generator')
@click.argument('time_command', type=click.Choice(['this', 'last']))
@click.argument('data_mode', type=click.Choice(['excel', 'exchange']), default='exchange')
@click.option('--password', prompt=True, hide_input=True, confirmation_prompt=False)
@pass_context
def cli(ctx, time_command, data_mode, password):
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我只希望密码在data_mode参数等于exchange. 我怎么能把它拉下来?

python python-click

7
推荐指数
1
解决办法
1779
查看次数

argparse中的交叉参数验证

我正在寻找一种Python方式来验证参数,当它们的验证在逻辑上取决于从其他参数解析的值时。

这是一个简单的例子:

parser.add_argument(
    '--animal', 
    choices=['raccoon', 'giraffe', 'snake'], 
    default='raccoon',
)
parser.add_argument(
    '--with-shoes', 
    action='store_true',
)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,解析此命令将导致错误:

my_script.py --animal snake --with-shoes
Run Code Online (Sandbox Code Playgroud)

在这里添加互斥组似乎没有帮助,因为其他组合都可以:

my_script.py --animal raccoon --with-shoes
my_script.py --animal raccoon
my_script.py --animal snake
my_script.py --animal giraffe --with-shoes
my_script.py --animal giraffe
Run Code Online (Sandbox Code Playgroud)

理想情况下,验证错误不应与--animal参数或--with-shoes参数绑定,因为接口无法告诉您此处需要更改哪个值。每个值都是有效的,但不能组合使用。

我们可以通过对args命名空间进行后处理来做到这一点,但是我正在寻找一种解决方案,该解决方案会导致parser.parse_args()调用失败,即实际上是参数解析期间(而不是之后)失败。

python argparse

5
推荐指数
1
解决办法
610
查看次数

标签 统计

python ×3

python-click ×2

argparse ×1