im试图使用Click制作一个cli程序。 该程序有一个子组,它拥有命令。 该组下的所有命令都必须从该组中获取对象(现在是一个类)。
我仅在运行时才调用类
cli monitor
然后使用类函数:
cli monitor phones
问题:
运行group命令后,子组无法识别该类。 即使已传递上下文。
还有其他方法来调用该类,然后运行其他子命令,然后再检查是否调用了子命令吗?有什么想法吗?
import click
from .Monitoring_amit import Monitor
@click.group()
def cli():
"""
Welcome to XXX,\n
"""
@cli.group(short_help="Monitor BeeHero's devices.", invoke_without_command=True)
# @click.option('--customer', prompt='customer', help='The person to greet.')
@click.pass_context
def monitor(ctx):
if ctx.invoked_subcommand is None:
click.echo("Configure dates to monitor:")
start_date = input('From what date(d/m/y)?')
start_date = datetime.datetime.strptime(start_date, "%d/%m/%Y").date()
end_date = input('To what date(d/m/y)?')
end_date = datetime.datetime.strptime(end_date, "%d/%m/%Y").date()
Monitoring = Monitor(start_date, end_date)
ctx.obj = Monitoring
else:
print(f"Executing {ctx.invoked_subcommand}")
@click.option('--customer', prompt='customer', help='The person to greet.')
@monitor.command(short_help="Show phones arrived")
@click.pass_obj
def phones(ctx, customer):
ctx.obj.phonesarrived(customer)
我希望能够一次加载课程, 然后运行包含此类中的功能的子命令。