Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python docopt&x27;s参数字典标志显示其参数的值,而不是True/False_Python_Command Line Interface_Docopt - Fatal编程技术网

Python docopt&x27;s参数字典标志显示其参数的值,而不是True/False

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>

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

"""
输出参数字典的格式为

{'--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
"""