Python docopt&x27;s参数字典标志显示其参数的值,而不是True/False
我的python程序中有一个docopt docstring,看起来像这样:Python docopt&x27;s参数字典标志显示其参数的值,而不是True/False,python,command-line-interface,docopt,Python,Command Line Interface,Docopt,我的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>
"""
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
"""
输出参数字典的格式为
{'--help': False,
'--version': False,
'-o': 'outputmodel',
'-s': None,
'-u': None,
'-v': False,
'<model>': None,
'<plotname>': None,
'<word>': None,
'DIRECTORY': 'rootfolder',
'tsneplot': False,
'word2vec': True}
输出字典:
{'--help': False,
'--version': False,
'-o': None,
'-s': None,
'-u': 'updatedmodel',
'-v': False,
'<model>': None,
'<plotname>': None,
'<word>': None,
'DIRECTORY': 'rootfolder',
'tsneplot': False,
'word2vec': True}
-s
标志获取
参数的值,并且
参数的键在字典中不存在
在我做了一些小改动之前,它还可以正常工作。我试图查看文档字符串并阅读文档,但无法找出哪里可能是错误的,因为我似乎已经正确地指定了选项描述。有人能帮我解决这个问题吗?你刚刚忘记了
目录
周围的
标志。试试这个:
"""
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
"""
“”“
program.py
用法:
program.py(-h |--help)
program.py--版本
program.py word2vec[-u MODEL][-v]
program.py word2vec[-o OUTPUTMODEL][-v]
program.py tsneplot[-s]
选项:
-h--帮助显示此屏幕。
--版本显示版本。
-o OUTPUTMODEL指定输出模型的名称
-s指定要保存的打印的目标文件夹和名称(对于$
-u模型指定要更新的模型的名称
-详细输出
"""
您刚刚忘记了目录周围的
符号。请尝试以下操作:
"""
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
"""
“”“
program.py
用法:
program.py(-h |--help)
program.py--版本
program.py word2vec[-u MODEL][-v]
program.py word2vec[-o OUTPUTMODEL][-v]
program.py tsneplot[-s]
选项:
-h--帮助显示此屏幕。
--版本显示版本。
-o OUTPUTMODEL指定输出模型的名称
-s指定要保存的打印的目标文件夹和名称(对于$
-u模型指定要更新的模型的名称
-详细输出
"""
“-o
标志获取参数的值”-这正是我希望发生的事情!请注意None
为false,非空字符串为truthy,因此如果args['-o'],您仍然可以执行:
并获得正确的行为。@jornsharpe-Aha!非常感谢!不过有一点混淆。当我第一次尝试类似的docstring时,它给-o
标志提供了True
值,给OUTPUTMODEL
键提供了参数值。docopt文档中的测试示例也给出了类似的结果。那么,为什么不呢当OUTPUTMODEL应该是一个参数时,它会被创建为一个键吗?你能回滚你的更改吗?你更新了模块吗?不,我没有更新。我试着让它尽可能回到初始阶段,上面的代码代表了这个阶段。上面文档字符串中唯一额外的东西是用法中的最后一个命令e> 。我只是试着使用你的解决方案和它的工作方式。所以,唯一困扰我的是,如果它恢复到最初的工作方式,该怎么办。程序将崩溃。@dsgdfg抱歉,我不明白。python如何接受参数?参数不应该由提供参数字典的docopt解析吗?你是说g此解析出现问题?“-o
标志获取参数的值”-这正是我希望发生的事情!请注意None
为false,非空字符串为truthy,因此,如果args['-o',您仍然可以执行操作:
并获得正确的行为。@jornsharpe-Aha!非常感谢!不过有一点混淆。当我第一次尝试类似的docstring时,它给-o
标志提供了True
值,给OUTPUTMODEL
键提供了参数值。docopt文档中的测试示例也给出了类似的结果。那么,为什么不呢当OUTPUTMODEL应该是一个参数时,它会被创建为一个键吗?你能回滚你的更改吗?你更新了模块吗?不,我没有更新。我试着让它尽可能回到初始阶段,上面的代码代表了这个阶段。上面文档字符串中唯一额外的东西是用法中的最后一个命令e> 。我只是试着使用你的解决方案和它的工作方式。所以,唯一困扰我的是,如果它恢复到最初的工作方式,该怎么办。程序将崩溃。@dsgdfg抱歉,我不明白。python如何接受参数?参数不应该由提供参数字典的docopt解析吗?你是说g此解析出现问题了吗?感谢您的回复,我刚刚尝试了它,但它给出了相同的输出。在上面,它似乎说参数可以用大写字母书写:以“”开头的单词或者大写单词被解释为位置参数。
那么,目录
真的不需要尖括号吗?啊,你说得对。那么“”不会有任何区别。谢谢你的回复,我刚刚尝试过,但它给出了相同的输出。在上面,它似乎说一个参数可以用大写字母写:以“”开头的单词或者大写单词被解释为位置参数。
那么,目录
实际上不需要尖括号,是吗?啊,你说得对。所以“”没有任何区别。
program.py tsneplot <model> <word> [-s <dest> <plotname>]
"""
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
"""