【问题标题】:Python argparse - Add mandatory arguments with conditionPython argparse - 添加带条件的强制参数
【发布时间】:2020-09-18 22:55:52
【问题描述】:

您好,我想添加以下参数:

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来完成吗?还是我需要一些验证方法来强制它是强制性的?

谢谢

【问题讨论】:

标签: python argparse


【解决方案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')

【讨论】:

  • 虽然我想避免使用“if”,但我发现没有其他方法:)
猜你喜欢
  • 1970-01-01
  • 2014-10-26
  • 2018-04-29
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2012-10-21
  • 1970-01-01
相关资源
最近更新 更多