0

我正在尝试一个非常简单的 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_fileandoutput_format参数在名称中保留了<and>分隔符,使得调用args['output_file']变得不可能。从用法字符串中删除分隔符会改变语义,使选项变成关键字。

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

4

1 回答 1

0

我认为这被认为是调度的一部分,它可能具有各种特定于语言的含义。docopt-dispatch有一个实验项目,它似乎可以用 Python 注释很好地处理它。我有一个名为片段的程序,我在我自己的调度风格中重新映射参数名称,但我通过调用args你所做的方式来做到这一点。

于 2016-01-27T17:17:42.987 回答