首页 > 解决方案 > 带有 2 个日期参数的 argparse

问题描述

我想创建一个程序,在命令行上给出的 2 个日期之间从数据库中选择用户。我有:

import argparse

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()

group.add_argument("--date1","-d1",help="Show users between dates",type=str)
group.add_argument("--date2","-d2",help="Show users between dates",type=str)

if args.date1 and args.date2:
    DataCalculation.show_users_between_date(args.date1,args.date2)

在我的 DataCalculation 中,我有查询以获取两个日期之间的用户。不幸的是,这个解决方案不起作用,我得到错误:argument --date2/-d2: not allowed with argument --date1/d1

我正在运行如下程序:py main.py -d1 1994-01-01 -d2 1995-12-31

我在想我可以将这 2 个日期拆分为函数列表并只给出 1 个参数,例如:py main.py -d 1994-01-01 1995-12-31,但这个想法也行不通。有没有一种简单的方法可以使用必须一起给出的 2 个参数?

标签: pythonargparse

解决方案


你可以使用

import argparse

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()

group.add_argument("--daterange","-dr",help="Show users between dates",type=str)
args = parser.parse_args()

date1, date2 = args.daterange.split()
print(date1)

然后引用你的论点,如

python test.py -dr "1994-01-01 1995-12-31"

上面的代码片段产生:

1994-01-01

推荐阅读