Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse具有1对2参数的互斥组_Python_Argparse - Fatal编程技术网

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

Python argparse具有1对2参数的互斥组,python,argparse,Python,Argparse,在搜索文本文件(日志)的脚本中,我使用argparse获取命令行参数并定义搜索条件 我使用--df和--dt来定义from=>到period。我还需要一个可选的--period,它将通过使用自定义操作(例如“week”)解析的一些定义字符串来覆盖--df和--dt。现在,我希望--period与--df和--dt互斥,但就我所知,这在add_mutual_exclusive_group()中是不可能的 我尝试了以下代码,但没有成功: parser = argparse.ArgumentParse

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

我使用--df和--dt来定义from=>到period。我还需要一个可选的--period,它将通过使用自定义操作(例如“week”)解析的一些定义字符串来覆盖--df和--dt。现在,我希望--period与--df和--dt互斥,但就我所知,这在add_mutual_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_参数中使用
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]