小编Ara*_*ght的帖子

如何不退出单击 CLI?

我正在编写一个 python 脚本,它的行为应该像一个典型的 shell 并提供一些自写函数。它已经工作得很好,但它总是在成功执行命令后退出,因此必须再次启动它才能执行第二个任务。我怎样才能做到,所以它不会以退出代码 0 结束,而是返回到 shell 等待新输入?那么我将如何实现退出方法?以下示例总是在输入 print-a 或 print-b 后退出:

import click
import click_repl
from prompt_toolkit.history import FileHistory
import os

@click.group(invoke_without_command=True)
@click.pass_context
def cli(ctx):
     if ctx.invoked_subcommand is None:
         ctx.invoke(repl)

@cli.command()
def print_a():
    print("a")


@cli.command()
def print_b():
    print("b")


@cli.command()
def repl():
    prompt_kwargs = {
        'history': FileHistory(os.path.expanduser('~/.repl_history'))
    }
    click_repl.repl(click.get_current_context(), prompt_kwargs)

def main():
    while True:
        cli(obj={})


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

(还有一个额外的问题:在 cmd 包中可以自定义>提示标签,这可以通过单击来实现吗?所以它是类似的东西App>?)

python command-line-interface python-3.x

3
推荐指数
1
解决办法
3456
查看次数

Groovy:可以构建函数映射吗?

我有一个元素列表,我想构建一个地图,该列表中的每个元素都有一个方法调用。例如:

list = ['a', 'b', 'c']
map = list.collectEntries{[it: println(it)]}
map[b]

>>b
Run Code Online (Sandbox Code Playgroud)

由于两个问题,这不起作用:

  1. println 分配给映射中的键时立即执行
  2. map[b] 遇到错误: groovy.lang.MissingPropertyException: No such property: b for class: test

是否可以设置这样的地图,而无需立即执行命令?怎么做到呢?

注意:我知道,我想要实现的目标听起来有点奇怪,但是我得到了一种方法,该方法将这样的映射作为参数然后运行命令,因此我没有其他选项,例如 for 循环之类的东西

groovy jenkins-groovy

2
推荐指数
1
解决办法
1214
查看次数