【发布时间】:2016-08-23 16:46:51
【问题描述】:
我正在使用 argparse 包来解析命令行参数。现在我想准确地接受 0、1 或 2 个字符串并将它们放入一个列表中。
我目前的做法是这样的:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('strs', nargs='*')
print(parser.parse_args([]).strs)
print(parser.parse_args(['AAA']).strs)
print(parser.parse_args(['AAA', 'BBB']).strs)
print(parser.parse_args(['AAA', 'BBB', 'CCC']).strs)
对于第一个、第二个和第三个parse_args(),结果是预期的。对于最后一个,我目前的方法是if len(parse_args.strs) > 2: raise。有没有更好的方法可以让 argparse 为我检查?
【问题讨论】:
-
该副本的答案提供了一个自定义的 Action 类,例如我建议的。但我不确定这是否比解析后测试有所改进。