使用argparse
时,我需要确保用户输入两个字符串。但是,它们有两种可能的选择来输入字符串,例如选项-a
和-b
。他们应该能够做以下任何事情:
python runscript.py -a str1 str2
python runscript.py -a str1 -b str2
python runscript.py -b str1 str2
关键是必须只有两个输入,但它们可以用于任何可用的选项。
我的尝试基本上设置了这样的参数
parser.add_argument('-a', nargs='*')
parser.add_argument('-b', nargs='*')
然后我必须这样做:
if (args.a): num_a = len(args.a) # I need to check if the -a option was even used
else: num_a = 0
if (args.b): num_b = len(args.b) # same as above but for -b option
else: num_b = 0
# Check that number of arguments is correct
if (num_a + num_b) != 2:
<error code>
这看起来有点无关紧要。有更多的Pythonic方式吗?
答案 0 :(得分:4)
为两个参数提供默认的空列表值:
parser.add_argument('-a', nargs='*', default=[])
parser.add_argument('-b', nargs='*', default=[])
现在值始终将成为一个列表,简化了错误检查:
if len(args.a) + len(args.b) != 2:
parser.error('....')