argparse:如何使用nargs =“ *”和选项允许空列表

时间:2019-08-31 15:28:31

标签: python argparse

argparse中,如何创建一个可选的位置命令行选项,该选项需要多个参数,而这些参数都必须是选项列表的一部分?

在下面的示例中,我要允许列表['a', 'b', 'c']的任何子集–即['a']['a', 'c'],...,最重要的是,空列表{{1} }。我期待通过以下方式实现这一目标,但是如果省略该参数,它将失败。

[]

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('letters', nargs='*', choices=['a', 'b', 'c'])
args = parser.parse_args()

更新:此后,我发现error: argument letters: invalid choice: [] (choose from 'a', 'b', 'c') 似乎可以完成这项工作。这使我感到震惊,因为它表明choices=['a', 'b', 'c', []]检查argparse,然后暗示[] in choices也应放在['a']中(而不是choices

0 个答案:

没有答案