【发布时间】:2016-01-28 01:17:42
【问题描述】:
我正在尝试一个非常简单的 python 脚本,只有位置参数,由 docopt 处理。
#!/usr/bin/env python
opt_spec = """Test
Usage: docopt_test (import | export <output_file> <output_format>)
docopt_test (-h | --help)
docopt_test (-v | --version)
Options:
-h --help Show this screen.
-v --version Show version.
"""
from docopt import docopt
if __name__ == '__main__':
arguments = docopt(opt_spec, version='Test 1.0')
print(arguments)
运行时会打印:
./docopt_test.py export file.xml xml
{'--help': False,
'--version': False,
'<output_file>': 'file.xml',
'<output_format>': 'xml',
'export': True,
'import': False}
问题在于 output_file 和 output_format 参数在名称中保留了 < 和 > 分隔符,使得像 args['output_file'] 这样的调用是不可能的。从用法字符串中删除分隔符会改变语义,使选项变成关键字。
有没有办法解决这个问题而不必诉诸 args['<output_file>'] 之类的用法?
【问题讨论】:
标签: python command-line-arguments docopt