python-click 读取参数不正确(将一个单词拆分为字母)

时间:2021-07-26 19:39:04

标签: python python-click

我有一个带有组的 click 应用程序,它应该采用 2 个必需参数和 2 个可选参数并将它们发送到行中,但由于某种原因在命令行中,click 将第一个参数拆分为单个字母。因此,点击看到的不是 api-keychain store test,而是 api-keychain store t e s t

命令行输出:

>>> api-keychain store test test

<<< Usage: e [OPTIONS] APPLICATION KEY [EXPIRATION] [USERDATA]
<<< Try 'e --help' for help.
<<< 
<<< Error: Missing argument 'KEY'.

源代码:

@click.group()
def cli():
    pass

@cli.command(no_args_is_help=True)
@click.argument('application')
@click.argument('key')
@click.argument('expiration', required=False, default='1/1/9999')
@click.argument('userdata', required=False, default='{}')
def store(application, key, expiration, userdata):
    '''Stores APPLICATION, KEY, and optionally EXPIRATION, and USERDATA in a new key. Creates a keychain if one does not already exist.'''
    store(application,key,expiration,userdata)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我将活动函数命名为“store”,但也将我的 CLI 命令命名为“store”,因此它破坏了参数解析器。当我将应用程序函数重命名为“api_store”并重构代码时:

def store(application, key, expiration, userdata):
    '''Stores APPLICATION, KEY, and optionally EXPIRATION, and USERDATA in a new key. Creates a keychain if one does not already exist.'''
    api_store(application,key,expiration,userdata)

它解决了问题并开始正确解析。

相关问题