在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
)