4

这个问题是关于 Python Click库的。

我想单击以收集我的命令行参数。收集后,我想重用这些值。我不想要任何疯狂的回调链接,只需使用返回值。默认情况下,单击禁用返回值并调用sys.exit().

我想知道如何正确调用standalone_modehttp://click.pocoo.org/5/exceptions/#what-if-i-don-t-want-that),以防我想使用装饰器样式。上面链接的文档仅显示(手动)使用单击创建命令时的用法。甚至可能吗?下面显示了一个最小的示例。它说明了单击sys.exit()返回后如何直接调用gatherarguments

import click

@click.command()
@click.option('--name', help='Enter Name')
@click.pass_context
def gatherarguments(ctx, name):
    return ctx

def usectx(ctx):
    print("Name is %s" % ctx.params.name)

if __name__ == '__main__':
    ctx = gatherarguments()
    print(ctx) # is never called
    usectx(ctx) # is never called 

$ python test.py --name Your_Name

我希望这是无状态的,也就是说,没有任何click.group功能——我只想要结果,而不需要退出我的应用程序。

4

1 回答 1

7

只发送standalone_mode 作为关键字参数对我有用:

from __future__ import print_function
import click

@click.command()
@click.option('--name', help='Enter Name')
@click.pass_context
def gatherarguments(ctx, name):
    return ctx

def usectx(ctx):
    print("Name is %s" % ctx.params['name'])

if __name__ == '__main__':
    ctx = gatherarguments(standalone_mode=False)
    print(ctx)
    usectx(ctx)

输出:

./clickme.py --name something
<click.core.Context object at 0x7fb671a51690>
Name is something
于 2015-12-15T10:39:08.187 回答