我的python程序中有一个docopt docstring,它看起来像这样:
"""
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
值,而是为-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>
参数的键。
在我做了一些小改动之前,它刚刚工作正常。我试图查看docstring并阅读文档,但无法弄清楚我可能出错的地方,因为我似乎已经正确地指定了选项说明。有人可以帮我解决这个问题吗?
答案 0 :(得分: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
"""