在我搜索文本文件(日志)的脚本中,我使用argparse来获取命令行参数并定义搜索条件。
我使用--df和--dt来定义from =>期间。我还想要一个可选的--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)'
)
我有什么方法可以使用-df和--dt参数互相排斥(反之亦然)?
答案 0 :(得分:4)
如果您对此解决方案非常确定和满意,我可以解决这个问题。像nargs
这样使用add_argument
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]
希望有所帮助