如何使用Click库实现无“--”与“=”的命令调用传参
用Click实现子命令+位置参数的执行格式
当然可以实现啦!你想要的是把原来的选项参数改成子命令+位置参数的组合,最新版的Click完全支持这个需求,作为Click新手,咱们一步步来改:
原来的代码问题
你之前用@click.option定义了--hello选项,所以执行时需要用--hello=filename.txt的格式。现在要改成python main.py hello filename.txt,本质是把hello变成一个子命令,后面跟必填的位置参数(文件名)。
修改后的代码示例
直接上修改好的代码,你可以直接替换原来的代码:
import click # 先定义一个命令组,用来容纳子命令 @click.group() def cli(): pass # 定义"hello"子命令,并用argument接收文件名参数 @cli.command() @click.argument('filename', type=click.Path(exists=True)) def hello(filename): # 这里写你原来read_config函数里的逻辑,现在文件名存在filename变量里 print(f"读取文件: {filename}") if __name__ == '__main__': cli()
执行方式
现在你就可以用你想要的格式执行命令了:
python main.py hello filename.txt
关键知识点解释
@click.group():用来创建一个命令组,允许你添加多个子命令(比如以后你想加world子命令也很方便)。@cli.command():把hello函数注册成命令组下的子命令。@click.argument():用来定义位置参数,这里指定了type=click.Path(exists=True),和你原来的option一样,会自动检查文件是否存在,不存在的话Click会帮你报错提示。
额外小提示
如果想给子命令加帮助说明,可以在@cli.command()里加help参数,比如:
@cli.command(help="读取指定的配置文件") @click.argument('filename', type=click.Path(exists=True)) def hello(filename): # 逻辑代码
执行python main.py --help就能看到这个帮助信息了~
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

