python 使用docopt包含多个参数列表

llmtgqce  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(142)

我使用的是docopt library
我找不到完成以下要求的方法:
文档字符串为:

"""
aTXT tool

Usage:
  aTXT <source>... [--ext <ext>...]

Options:
    --ext       message

"""

在shell中,我想写这样的东西:

atxt a b c --ext e f g

docopt输出的结果字典如下:

{'--ext': True,
 '<ext>': [],
 '<source>': ['a', 'b', 'c', 'e', 'f']}

但是,我需要它是以下内容:

{'--ext': True,
 '<ext>': ['e', 'f', 'g'],
 '<source>': ['a', 'b', 'c']}

我该怎么做?

goqiplq2

goqiplq21#

我还没能找到一种直接将列表传递到Docopt参数字典的方法,但是,我找到了一种解决方案,它允许我将一个字符串传递到Docopt,然后将该字符串转换为列表。
您的Docopt __doc__存在一些问题,我修改了它们,以便能够针对您的情况测试解决方案。
在命令行中:

python3 gitHubTest.py a,b,c -e 'e,f,g'

gitHubTest.py中:

"""
aTXT tool

Usage:
  aTXT.py [options] (<source>)

Options:
  -e ext, --extension=ext    message

"""
from docopt import docopt

def main(args) :
    if args['--extension'] != None:
        extensions = args['--extension'].rsplit(sep=',')
        print (extensions)

if __name__ == '__main__':
    args = docopt(__doc__, version='1.00')
    print (args)
    main(args)

它返回:

{
'--extension': 'e,f,g',
'<source>': 'a,b,c'
}
['e', 'f', 'g']

main()中创建的变量extensions现在就是您希望传入的列表。

相关问题