我正在尝试一个非常简单的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>']
这样的用法?
答案 0 :(得分:0)
我认为这被视为调度的一部分,这可能具有各种特定于语言的含义。这是docopt-dispatch的实验项目,似乎可以很好地处理Python注释。我有一个名为snippets的程序,我在我自己的调度方式中重新映射了参数名称,但我只是按照你的方式调用args
。