python-3.x - 如何在 python 中创建点击子命令?
问题描述
查看命令和组的文档后,我没有发现任何有助于使用 click 创建子命令(版本 7.1.2)。要么我错过了它,要么以一种非常奇怪的方式描述了它。
我想要做的是有一个子命令,所以我可以做例如
python myscript.py sub1
python myscript.py sub2
它执行两个不同的功能。这是我尝试过的:
import click
@click.group()
def sub1():
print("sub1")
@click.group()
def sub2():
print("sub2")
我也试过这个:
import click
@click.command()
def sub1():
print("sub1")
@click.command()
def sub2():
print("sub2")
这都不起作用:
import click
@click.group()
def cli():
print("cli")
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
但这似乎不起作用(即永远不会执行打印语句)。怎么做才对?这到底是在哪里记录的?
在尝试文档中给出的确切示例时,我也会得到相同的行为:
import click
@click.group()
@click.option('--debug/--no-debug', default=False)
def cli(debug):
click.echo(f"Debug mode is {'on' if debug else 'off'}")
@cli.command() # @cli, not @click!
def sync():
click.echo('Syncing')
完全没有输出!
解决方案
通过单击创建子命令,并在您调用代码时使其工作
python mycode.py
你需要定义的__main__
东西:
import click
@click.group()
def cli():
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
if __name__ == "__main__":
cli()
他们似乎忘记了在他们的文档中提及这一点,或者它隐藏在某个地方。
推荐阅读
- java - 用Sql中的第一个组合框字符串值填充第二个组合框
- android - 从图库上传时调整大小和压缩图像
- javascript - 在 jupyter 笔记本中加载外部 javascript 库
- spring - Hibernate EventListeners 不拦截 HQL executeUpdate
- php - 我如何获得与我的帐户 sid 相关的数字 - PHP
- c++ - C++ in condition
- function - function Power(x,y) in assembly ia32 max 32 bit
- java - 如何配置 Reactive WebClient 以使用 2-way TLS?
- php - while 循环的变量输出与预期不符
- stripe-payments - can you specify a thank you URL using stripe simple checkout form