【问题标题】:Adding multiple pairs of arguments, parser添加多对参数,解析器
【发布时间】:2021-09-16 16:24:06
【问题描述】:

我希望能够添加多对开始日期和结束日期作为参数,但我不确定如何。

目前我的代码如下:

if __name__ = "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--start_date', type = str)
    parser.add_argument('--end_date', type = str)
    stdin_args = parser.parse_args()
    do_function(...)

但我希望能够添加多对开始日期和结束日期,使用类似n_date_pairs 的参数,将整数作为我要输入的日期对数。比如,

python main.py --n_date_pairs 3 --start_date_1 2020-01-02 --end_date_1 2020-01-04 --start_date_2 2021-03-24 --end_date_2 2021-04-01 --start_date_3 2021-07-01 --end_date_3 2021-07-05

如何添加?

【问题讨论】:

  • 您可以定义一些自定义格式字符串类型参数,然后解析该字符串。无需依赖模块内置机制。
  • 这能回答你的问题吗? Dynamic arguments for Python's argparse
  • 如果您指定 action='append' 并重复参数,您将获得可以迭代的列表。
  • 只是一个参数--date_ranges 并为其分配多个日期范围怎么样。例如。 --date_ranges 2020-01-02/2020-01-04 2021-03-24/2021-04-01 2021-07-01/2021-07-05。要拥有多个值,只需 add_argument('--date_ranges', nargs='*')

标签: python argparse


【解决方案1】:

通常我会为您所描述的数据使用成对列表。然后遍历列表。这是一个玩具示例:

list_of_date_pairs = [['2020-01-02', '2020-01-04'], ['2021-03-24', '2021-04-01'], ['2021-07-01', '2021-07-05']]

for st, end in list_of_date_pairs:
    parser.add_argument(st)
    parser.add_argument(end)

【讨论】:

  • 您没有使用命令行参数,这是 OP 的重点。
猜你喜欢
  • 2011-11-21
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 2018-04-08
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多