docopt不允许可选参数

2024-06-06 01:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在docopt中有以下用法:

cli.py add_user <user_file> [<devices_file>] <destination_account> <token>
cli.py remove_user (--id|--username) <user_id> <source_account> <token>

其中[<devices_file>]是可选参数。在

然而,当我试图这样使用它时,我得到了一个错误。在

这很有效:

^{pr2}$

这将引发一个错误:

add_user user_29087.json 531 token

错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensio
ns\Microsoft\Python Tools for Visual Studio\2.0\visualstudio_py_util.py", line 7
6, in exec_file
    exec(code_obj, global_variables)
  File "C:\Users\mryan\Documents\Code\cli\cli_front.py", line
 49, in <module>
    arguments = docopt(__doc__, version='1.0.0rc2')
  File "C:\Users\mryan\Documents\Code\cli\common\docopt.py", l
ine 581, in docopt
    raise DocoptExit()
DocoptExit: Usage:
    cli.py get_token
    cli.py add_user <user_file> [<devices_file>] <destination_account> <token>
    cli.py remove_user (--id|--username) <user_id> <source_account> <token>
    cli.py get_users <account_id> <token>

有人能看出我做错了什么吗?在


Tags: inpytokenaddidcli错误account
1条回答
网友
1楼 · 发布于 2024-06-06 01:20:16

从您在add_user中的用法来看,我看不出CLI如何区分是否有可选的devices_文件。在

在第二个例子中,它假设531是您的可选项,而您只是缺少您的,因为它无法将“531”条目解释为设备文件。在

由于devices_文件是可选的,所以我会这样写:

Usage:
    add_user <user_file> <destination_account> <token> [<devices_file>]

或者

^{pr2}$

请注意,在文档中,选项基本上都是在最后完成的。在

"""Naval Fate.

Usage:
  naval_fate.py ship new <name>...
  naval_fate.py ship <name> move <x> <y> [ speed=<kn>]
  naval_fate.py ship shoot <x> <y>
  naval_fate.py mine (set|remove) <x> <y> [ moored |  drifting]

相关问题 更多 >