docopt不解析参数,只是打印用法



我无法让docopt工作。我有一个简单的例子,据我所知是正确的:

#! /usr/bin/env python3
"""usage: do.py name
"""
from docopt import docopt

args = docopt(__doc__)
print(f"Hello, {args['name']}!")

它只会打印:

$ ./do.py susan
usage: do.py name

来自docopt文档:

  • <自变量>,论据。参数被指定为大写单词,例如my_program.py CONTENT-PATH或被尖括号包围的单词:my_program.py <content-path>

由于name既不是大写,也不是用尖括号括起来的,所以它不是一个参数。既然这不是一个论点,它一定属于的范畴

  • 命令是不遵循--options<arguments>ARGUMENTS的上述约定的词,加上两个特殊命令:短划线"-"和双破折号"--">

事实上,这就是

$ ./do.py name
Hello, True!

它显示True,因为这是为命令存储的值,用于证明已输入命令。所以这可能不是你想要的。你可以从这个模型开始:

#! /usr/bin/env python3
"""usage: do.py hello <name>
"""
from docopt import docopt
args = docopt(__doc__)
if args['hello']:
print(f"Hello, {args['<name>']}!")

具有更直观的结果:

./do.py hello susan
Hello, susan!

但有可能你根本不需要命令:

#! /usr/bin/env python3
"""usage: do.py <name>
"""
from docopt import docopt
args = docopt(__doc__)
print(f"Hello, {args['<name>']}!")
$ ./do.py susan
Hello, susan!

相关内容

  • 没有找到相关文章

最新更新