使用Python Click,如何添加5个以上的选项即5个以上?

问题描述 投票:0回答:1

目前的代码。

@click.command()
@click.option('--logs', type=click.Choice(['all', 'errors', 'no-errors', 'archive',
                                           'archive-with-errors']))
@click.option('--process', type=click.Choice(['all', 'fix', 'spool', 'status', 'import']))
@click.option('--quiet', is_flag=True)
@click.option('--check', is_flag=True)
@click.option('--scan', nargs=1)
def main(logs, process, quiet, check, scan):

如果我在主函数中添加了第6个选项,pylint会抱怨 "太多参数(65) (52:0) [too-many-arguments]"

我不知道如何在pylint配置文件中添加一个异常。

我想知道如何传递更多的选项到python的@click。 或者我需要重组我的文件,使每个选项有自己的@click.command和自己的python函数?

对不起,如果这一点是重复的,我找不到它,因为点击是一个非常通用的术语。

python python-3.7
1个回答
0
投票

不太清楚你想用click做什么,包括在main中使用'click'会更好。

在测试模块click后,它只是将关键字参数发送到装饰的函数'main'。

Python 以字典的形式获取关键字参数,所以你通常使用 **kwargs 来传递无限数量的关键字参数。


例子:在Python中,你可以使用**kwargs来传递无限数量的关键字参数。

@click.command()
@click.option('--logs', type=click.Choice(['all', 'errors', 'no-errors', 'archive', 'archive-with-errors']))
@click.option('--process', type=click.Choice(['all', 'fix', 'spool', 'status', 'import']))
@click.option('--quiet', is_flag=True)
@click.option('--check', is_flag=True)
@click.option('--scan', nargs=1)
def main(*args, **kwargs):
    click.echo(kwargs)

结果。

{'logs': None, 'process': None, 'quiet': False, 'check': False, 'scan': 无}。

进程结束,退出代码0


您的代码。

@click.command()
@click.option('--logs', type=click.Choice(['all', 'errors', 'no-errors', 'archive', 'archive-with-errors']))
@click.option('--process', type=click.Choice(['all', 'fix', 'spool', 'status', 'import']))
@click.option('--quiet', is_flag=True)
@click.option('--check', is_flag=True)
@click.option('--scan', nargs=1)
def main(logs, process, quiet, check, scan):
    click.echo(locals())

结果:

{'logs': None, 'process': None, 'quiet': False, 'check': False, 'scan': 无}。

进程结束,退出代码0


正如你所看到的,使用**kwargs会产生同样的结果。我不知道这是否会影响模块的行为,但至少参数是正确传递的。试试这个。

© www.soinside.com 2019 - 2024. All rights reserved.