docopt的参数字典标志显示其参数的值,而不是真/假



我的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}

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

 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>参数的键在字典中不存在。

在我做了一些小的改变之前,它是正常工作的。我试图查看文档字符串和阅读文档,但无法找出我可能是错的,因为我似乎已经正确指定了选项描述。有人能帮我解决这个问题吗?

您只是忘记了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
"""

相关内容

  • 没有找到相关文章