Python argparse - 添加带条件的强制参数。

问题描述 投票:0回答:1

嗨,我想添加以下的参数,如果name='test1',那么start_date和end_date将是强制性的。

parser = argparse.ArgumentParser()
parser.add_argument('-n','--name', required=True)
parser.add_argument("-sd", "--start_date", dest="start_date", 
                        type=valid_date,
                        help="Date in the format yyyy-mm-dd")
parser.add_argument("-ed", "--end_date", dest="end_date", 
                        type=valid_date,
                        help="Date in the format yyyy-mm-dd")

I want that in case the name='test1' then start_date and end_date will be mandatory.Can it be done with arparse? or do I need some validation method to enforce it to be mandatory?

谢谢

python argparse
1个回答
1
投票

你可以先检查条件,然后检查其他参数是否都被提供。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-n','--name', required=True)
parser.add_argument("-sd", "--start_date", dest="start_date", 
                        help="Date in the format yyyy-mm-dd")
parser.add_argument("-ed", "--end_date", dest="end_date", 
                        help="Date in the format yyyy-mm-dd")

args = parser.parse_args()

if args.name == "test1":
    if args.start_date is None or args.end_date is None:
        parser.error('Requiring start and end date if test1 is provided')
© www.soinside.com 2019 - 2024. All rights reserved.