2017-04-08 47 views
2

這是從docopt.org的例子:解釋命令和位置參數與--docopt

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>的功能?

回答

1

我到達這裏的時候遇到了同樣的問題,我想我已經想出了一個解決方案。

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. 
"""