gpt4 book ai didi

具有 1 对 2 个参数的 Python argparse 互斥组

转载 作者:行者123 更新时间:2023-11-28 22:52:22 25 4
gpt4 key购买 nike

在我搜索文本文件(日志)的脚本中,我使用 argparse 获取命令行参数并定义搜索条件。

我使用 --df 和 --dt 来定义从 => 到句点。我还想要一个可选的 --period,它将通过使用自定义操作(例如“week”)解析的一些定义的字符串来覆盖 --df 和 --dt。现在,我希望 --period 与 --df AND --dt 互斥,但据我所知,add_mutually_exclusive_group() 是不可能的。

我试过下面的代码,没有成功:

parser = argparse.ArgumentParser(description='Search the file')

dfgroup = parser.add_mutually_exclusive_group()
dfgroup.add_argument(
'--df',
type=dateparser.parse,
metavar='DATETIME',
help='date and/or time to search from'
)
dfgroup.add_argument(
'--period',
action='store', #should be a custom action
metavar='PERIOD',
help='the period to search within (mutually exclusive with --df and --dt)'
)
dtgroup = parser.add_mutually_exclusive_group()
dtgroup.add_argument(
'--dt',
type=dateparser.parse,
metavar='DATETIME',
help='date and/or time to search to'
)
dtgroup.add_argument(
'--period',
action='store', #should be a custom action
metavar='PERIOD',
help='the period to search within (mutually exclusive with --df and --dt)'
)

有什么方法可以使 --period 与 --df 和 --dt 参数互斥(反之亦然)?

最佳答案

如果您对这个解决方案绝对有把握并感到满意,我有一个变通办法。在 add_argument 中像这样使用 nargs

import argparse
parser = argparse.ArgumentParser(description="Hello")
group = parser.add_mutually_exclusive_group()
group.add_argument('--period', action='store')
group.add_argument('--df_dt', nargs='+')
args = parser.parse_args()

执行脚本时提供这个

program.py --period <period>
program.py --df_dt <df> <dt>

然后使用

访问参数
df = args.df_dt[0]
dt = args.df_dt[1]

希望对你有帮助

关于具有 1 对 2 个参数的 Python argparse 互斥组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com