ArgumentParser:如果第一个参数是某个值,则只接受可选参数

时间:2014-04-30 18:35:23

标签: python

parser = argparse.ArgumentParser()
parser.add_argument("first_arg")
parser.add_argument("--second_arg")

我想说second_arg只有在first_arg取一定价值时才会被接受,例如" A"。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

parser_a = subparsers.add_parser('firstvalue')
parser_a.add_argument('bar', choices='A')
parser_a.add_argument("--second_arg")

args = parser.parse_args()

答案 1 :(得分:0)

解析args后,手动执行此操作可能最简单:

import sys
args = parser.parse_args()
if args.first_arg != 'A' and args.second_arg: # second_arg 'store_true'
    sys.exit("script.py: error: some error message")

如果second_arg不是store_true,请将second_arg的{​​{1}}设置为default。然后条件是:

None