从 Python Click CLI 命令保存“状态”或用户条目

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

我想在某个单例/内存空间中的 python 命令中保存一些用户输入的参数,稍后在另一个命令中访问这些参数。

是否可以使用 python 数据结构,或者我是否需要写入文本文件并读取文件?

谢谢!

python arguments click command-line-interface state
1个回答
0
投票

如此处文档中所述:https://click.palletsprojects.com/en/8.1.x/complex/ 保持状态/结果/输入: 您可以轻松地写下一个具有所需属性/变量的类,并在“@click.command()”修饰的任何函数中从中实例化一个对象,并使用装饰器将实例化对象保存在点击库的默认上下文对象中: @click.pass_context。然后你可以轻松地将对象作为参数传递给其他命令,然后操作它的属性/变量/等

这里是示例代码:

import click

class testRepo(object):
    def __init__(self,experimentID:int):
        self.experimentID:int = experimentID



@click.group
@click.pass_context
def cli(ctx,):
    ctx.obj = testRepo(1)



#without passed object
@click.command()
@click.option("-n", "--name", prompt="Insert your name:", help="Gets a first name")
def test1(name):
    click.echo(f'This Is Test1 - name = {name}')


#with passed object
@click.command()
@click.option("-f", "--family", prompt="Insert your family", help="Gets a family name")
@click.pass_obj
def test2(repo_passed_obj,family):
    repo_passed_obj.experimentID = 2
    click.echo(str(repo_passed_obj.experimentID))
    click.echo(f'This Is Test2 - family name is {family}')


cli.add_command(test1)
cli.add_command(test2)

#Call the group commands cli()
cli()
© www.soinside.com 2019 - 2024. All rights reserved.