docopt位置强制参数保持名称中的分隔符?

时间:2015-03-26 17:49:00

标签: python command-line-arguments docopt

我正在尝试一个非常简单的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_fileoutput_format参数会在名称中保留<>分隔符,因此无法调用args['output_file']。从使用字符串中删除分隔符会更改语义,使选项成为关键字。

有没有办法解决这个问题,而不必使用像args['<output_file>']这样的用法?

1 个答案:

答案 0 :(得分:0)

我认为这被视为调度的一部分,这可能具有各种特定于语言的含义。这是docopt-dispatch的实验项目,似乎可以很好地处理Python注释。我有一个名为snippets的程序,我在我自己的调度方式中重新映射了参数名称,但我只是按照你的方式调用args