我正在使用 docopt
来解析python中的命令行输入 . 我有我的文档字符串:
"""
Usage:
docoptTest.py [options]
Options:
-h --help show this help message and exit
-n --name <name> The name of the specified person
"""
然后我导入docopt并解析参数并打印它们:
from docopt import docopt
args = docopt(__doc__)
print(args)
>>> python docoptTest.py -n asdf
{'--help': False,
'--name': 'asdf'}
我尝试使用省略号来输入多个名称:
-n --name <name>... The name of the specified person
但是我遇到了使用错误 . 然后我将省略号放在初始用法消息中:
"""
Usage:
docoptTest.py [-n | --name <name>...] [options]
Options:
-h --help show this help message and exit
-n --name The name of the specified person
"""
但输出认为 --name
是一面旗帜 .
>>> python docoptTest.py -n asdf asdf
{'--help': False,
'--name': True,
'<name>': ['asdf', 'asdf']}
我该如何解决?
1 回答
这种表示法:
可能不适用于docopt,因为每个选项只需要一个参数 . 如果你想这样做,那么你可以使用某种分隔符,例如逗号,然后自己拆分 . 如果添加参数,则会出现问题,然后解析器将无法将最后一个
asdf
区分为选项或参数的一部分 . 有些人还在选项和参数之间加了=
.也许你可以试试这个:
这是做一些非常相似的事情的常见方式 . docopt字典看起来像这样: