我一直在尝试使用 docopt 制作一个简单的 CLI,但由于某种原因,我的默认参数没有出现。下面是我的测试代码。我正在使用docopt.py
来自 github 存储库的最新版本。
"""
Usage: scrappy <path> ... [options]
-a --auto Automatically scrape and rename without user interaction.
-l --lang Specify language code [default: en].
--scan-individual Evaluate series information individually for each file.
-c --cfg User alternate config file [default: ../scrappy.conf]
-t --test Test run. Do not modify files.
-v --verbose Print verbose output
"""
from docopt import docopt
arguments = docopt(__doc__, version='0.1.0 alpha')
print arguments # DEBUG
这是我运行时的输出$ scrappy/scrappy.py first_path_parameter second/path/parameter
{'--auto': None,
'--cfg': None,
'--lang': None,
'--scan-individual': None,
'--test': None,
'--verbose': None,
'<path>': ['first_path_parameter', 'second/path/parameter']}
有人知道发生了什么吗?
编辑:
我更新了我的代码,但我仍然得到类似的输出。更重要的是,当我尝试通过时--scan-individual
,我得到一个错误,据此它需要一个参数。同样,如果它很重要,我正在运行 docopt,只需将 docopt.py 复制到我的项目的工作目录中。这里发生了什么?
#!/usr/bin/env python
"""Scrappy: Rename media files based on scraped information.
Usage: scrappy <path> ... [options]
-a --auto Automatically scrape and rename without user interaction.
-l LANG --lang LANG Specify language code [default: en].
--scan-individual Evaluate series information individually for each file.
-c CONF --cfg CONF User alternate config file [default: ../scrappy.conf]
-t --test Test run. Do not modify files.
-v --verbose Print verbose output
"""
from docopt import docopt
arguments = docopt(__doc__, version='0.1.0 alpha')
print arguments # DEBUG
输出:
$ scrappy/scrappy.py first_path_parameter second/path/parameter --scan-individual
--scan-individual requires argument
Usage: scrappy <path> ... [options]