1

我的 python 程序中有一个 docopt 文档字符串,看起来像这样:

"""
program.py

Usage:
  program.py (-h | --help)
  program.py --version
  program.py word2vec DIRECTORY [-u MODEL] [-v]
  program.py word2vec DIRECTORY [-o OUTPUTMODEL] [-v]
  program.py tsneplot <model> <word> [-s <dest> <plotname>]

Options:
  -h --help               Show this screen.
  --version               Show version.
  -o OUTPUTMODEL          Specify the name of the output model
  -s <dest> <plotname>    Specify the destination folder and the name of the plot to be saved (for the tsne command)
  -u MODEL                Specify the name of the model to update
  -v                      Verbose output

"""

当我尝试命令时

python program.py word2vec rootfolder -o outputmodel

输出参数字典的形式为

{'--help': False,
 '--version': False,
 '-o': 'outputmodel',
 '-s': None,
 '-u': None,
 '-v': False,
 '<model>': None,
 '<plotname>': None,
 '<word>': None,
 'DIRECTORY': 'rootfolder',
 'tsneplot': False,
 'word2vec': True}

这里的问题是,它没有给标志一个True值,而是给标志一个应该在键中的值。换句话说,标志获取参数的值,而参数的键本身不存在。当我尝试如下所示的命令时也会发生同样的情况:-o-oOUTPUTMODEL-oOUTPUTMODEL

 python program.py word2vec rootfolder -u updatedmodel

输出字典:

   {'--help': False,
 '--version': False,
 '-o': None,
 '-s': None,
 '-u': 'updatedmodel',
 '-v': False,
 '<model>': None,
 '<plotname>': None,
 '<word>': None,
 'DIRECTORY': 'rootfolder',
 'tsneplot': False,
 'word2vec': True}

'-u' 标志被分配了其参数的值,而参数MODEL(如用法中所示)不存在。

命令中的 -s 标志也会发生类似的事情

program.py tsneplot <model> <word> [-s <dest> <plotname>]

-s标志获取<dest>参数的值,而字典<dest>中不存在参数的键。

不久前它工作正常,直到我做了一些小改动。我试图查看文档字符串并阅读文档,但无法弄清楚我可能错在哪里,因为我似乎确实正确指定了选项描述。谁能帮我解决这个问题?

4

1 回答 1

0

你只是忘记了<...>周围的标志DIRECTORY。尝试这个:

"""
program.py

Usage:
  program.py (-h | --help)
  program.py --version
  program.py word2vec <DIRECTORY> [-u MODEL] [-v]
  program.py word2vec <DIRECTORY> [-o OUTPUTMODEL] [-v]
  program.py tsneplot <model> <word> [-s <dest> <plotname>]

Options:
  -h --help               Show this screen.
  --version               Show version.
  -o OUTPUTMODEL          Specify the name of the output model
  -s <dest> <plotname>    Specify the destination folder and the name of the plot to be saved (for the $
  -u MODEL                Specify the name of the model to update
  -v                      Verbose output
"""
于 2015-08-31T09:17:56.547 回答