我无法让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!