首页 > 解决方案 > Python argparse - 添加带条件的强制参数

问题描述

嗨,我想添加以下参数:

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

我希望如果 name='test1' 那么 start_date 和 end_date 将是强制性的。可以用arparse来完成吗?还是我需要一些验证方法来强制它是强制性的?

谢谢

标签: pythonargparse

解决方案


您可以检查条件,然后检查是否同时提供了其他参数。

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

推荐阅读