在 docopt 中实现重复元素时遇到问题
Trouble implementing repeating elements in docopt
我正在使用 docopt
解析 python 中的命令行输入。我有我的文档字符串:
"""
Usage:
docoptTest.py [options]
Options:
-h --help show this help message and exit
-n --name <name> The name of the specified person
"""
然后我导入 docopt 并解析参数并打印它们:
from docopt import docopt
args = docopt(__doc__)
print(args)
>>> python docoptTest.py -n asdf
{'--help': False,
'--name': 'asdf'}
我试着用省略号允许输入多个名字:
-n --name <name>... The name of the specified person
但是我遇到了使用错误。然后我把省略号放在初始用法消息中:
"""
Usage:
docoptTest.py [-n | --name <name>...] [options]
Options:
-h --help show this help message and exit
-n --name The name of the specified person
"""
但是输出认为--name
是一个标志。
>>> python docoptTest.py -n asdf asdf
{'--help': False,
'--name': True,
'<name>': ['asdf', 'asdf']}
我该如何解决这个问题?
这个符号:
>>> python docoptTest.py -n asdf asdf
可能不适用于 docopt,因为每个选项只需要一个参数。如果你想这样做,那么你可以使用某种分隔符,例如逗号,然后自己拆分。如果您添加一个参数,就会出现问题,那么解析器将无法将最后一个 asdf
区分为选项或参数的一部分。有些人还在选项和它的参数之间放了一个=
。
也许你可以试试这个:
Usage:
docoptTest.py [-n|--name <name>]... [options]
Options:
-h --help show this help message and exit
-n --name <name> The name of the specified person
这是做非常相似的事情的一种很常见的方法。 docopt 字典看起来像这样:
$python docoptTest.py -n asdf -n ads
{'--help': False,
'--name': ['asdf', 'ads']}
$python docoptTest.py --name asdf --name ads
{'--help': False,
'--name': ['asdf', 'ads']}
我正在使用 docopt
解析 python 中的命令行输入。我有我的文档字符串:
"""
Usage:
docoptTest.py [options]
Options:
-h --help show this help message and exit
-n --name <name> The name of the specified person
"""
然后我导入 docopt 并解析参数并打印它们:
from docopt import docopt
args = docopt(__doc__)
print(args)
>>> python docoptTest.py -n asdf
{'--help': False,
'--name': 'asdf'}
我试着用省略号允许输入多个名字:
-n --name <name>... The name of the specified person
但是我遇到了使用错误。然后我把省略号放在初始用法消息中:
"""
Usage:
docoptTest.py [-n | --name <name>...] [options]
Options:
-h --help show this help message and exit
-n --name The name of the specified person
"""
但是输出认为--name
是一个标志。
>>> python docoptTest.py -n asdf asdf
{'--help': False,
'--name': True,
'<name>': ['asdf', 'asdf']}
我该如何解决这个问题?
这个符号:
>>> python docoptTest.py -n asdf asdf
可能不适用于 docopt,因为每个选项只需要一个参数。如果你想这样做,那么你可以使用某种分隔符,例如逗号,然后自己拆分。如果您添加一个参数,就会出现问题,那么解析器将无法将最后一个 asdf
区分为选项或参数的一部分。有些人还在选项和它的参数之间放了一个=
。
也许你可以试试这个:
Usage:
docoptTest.py [-n|--name <name>]... [options]
Options:
-h --help show this help message and exit
-n --name <name> The name of the specified person
这是做非常相似的事情的一种很常见的方法。 docopt 字典看起来像这样:
$python docoptTest.py -n asdf -n ads
{'--help': False,
'--name': ['asdf', 'ads']}
$python docoptTest.py --name asdf --name ads
{'--help': False,
'--name': ['asdf', 'ads']}