我正在尝试使用该docopt
软件包实现python3 CLI 。我试图让我的程序接受多个位置输入文件,以及可选的输出文件列表。我的文档字符串的MWE为:
__doc__ = """
Usage:
test.py [INPUT...] [-o OUTPUT...] [-t TEST]
Options:
-o OUTPUT..., --output OUTPUT... #One output file for each INPUT file [default: DEFAULT]
-t TEST, --test TEST #A test option
"""
例如程序调用为
test.py FILE_A FILE_B -o OUTFILE_A OUTFILE B -t true
应该返回一个字典:
{'--output': ['OUTFILE_A', 'OUTFILE_B'],
'--test': 'true',
'INPUT': ['FILE_A', 'FILE_B']}
但由于某种原因,它总是附加在INPUT参数后面:
{'--output': ['OUTFILE_A'],
'--test': 'true',
'INPUT': ['FILE_A', 'FILE_B', 'OUTFILE_B']}
不幸的是,Docopt中的选项只能采用一个参数,因此[-o OUTPUT...]
将不起作用。如您所陈述的,其余元素将被解释为其他参数。
解决此问题的一种方法是将省略号移到方括号之外:
Usage:
test.py [INPUT...] [-o OUTPUT]... [-t TEST]
并像这样使用它:
test.py FILE_A FILE_B -o OUTFILE_A -o OUTFILE_B
它看起来不太好,但是可以用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句