使用--docopt解释命令和位置参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用--docopt解释命令和位置参数相关的知识,希望对你有一定的参考价值。

这是docopt.org的示例:

Naval Fate.

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

Options:
  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
  --moored      Moored (anchored) mine.
  --drifting    Drifting mine.

我看到选项在Options:部分可以有很长的解释。例如,很明显naval_fate --versionShow version

但是,有没有办法为命令或位置参数提供扩展的解释?例如,用户如何知道naval_fate ship shoot <x> <y>的作用?

答案

我带着同样的问题来到这里,我想我已经找到了解决方案。

docopt文档字符串解析器不是很聪明或严谨,这是一件好事,因为它意味着您可以将各种其他信息放在文档字符串中而不会混淆docopt。例如,没有什么可以阻止你添加Commands:Arguments:部分到你的docstring。这是我目前正在处理的项目的文档字符串:

"""Helioplot.

Retrieve and plot heliometer results.

Usage:
    helioplot fetch <root_dir_path> --host=<host> --password=<password> [--port=<port>] [--database=<database>] [--username=<username>]

Commands:
    fetch <root_dir_path>   Fetch and dump data into the directory specified
                            by <root_dir_path>.

Options:
    -h --help               Show this screen.
    --version               Show version.
    --host=<host>           The address of the computer hosting the database
    --port=<port>           The port number on which the database can be
                            accessed.
    --database=<database>   The name of the database.
    --username=<username>   A database username.
    --password=<password>   The database password.
"""

以上是关于使用--docopt解释命令和位置参数的主要内容,如果未能解决你的问题,请参考以下文章

Python 中命令行参数解析工具 docopt 安装和应用

[python3 - package] docopt 命令行参数读取

python docopt模块详解

包括多个带有 docopt 的参数列表

使用docopt生成Python脚本参数项

让你如绅士般基于描述编写 Python 命令行工具的开源项目:docopt