Python 2.7 在python'中相互包含/排除选项;args解析

Python 2.7 在python'中相互包含/排除选项;args解析,python-2.7,argparse,Python 2.7,Argparse,如何描述python的argparse的以下参数语法 '-l'->放弃所有其他选项(如'-h') 或 ['-w'、'-r'、'-v']中的一个是强制性的文件该模块非常灵活,您应该考虑使用组或子解析器以本机方式实现您的目标 但是,如果您只是想拼凑一些东西,那么您可以处理自己的情况: import argparse parser = argparse.ArgumentParser() for arg in ["-l", "-w", "-r", "-v"]: parser.add_argum

如何描述python的argparse的以下参数语法

'-l'->放弃所有其他选项(如'-h')

['-w'、'-r'、'-v']
中的一个是强制性的文件

该模块非常灵活,您应该考虑使用组或子解析器以本机方式实现您的目标

但是,如果您只是想拼凑一些东西,那么您可以处理自己的情况:

import argparse

parser = argparse.ArgumentParser()
for arg in ["-l", "-w", "-r", "-v"]:
    parser.add_argument(arg, action="store_true")
parser.add_argument("--file", nargs=1)
args = parser.parse_args("-l --file foo.txt".split())
print args
args = parser.parse_args("-l -r".split())
print args
if any((args.w, args.r, args.v)) and args.file is None:
    parser.error("w r v arguments require a file")
这将打印:

Namespace(file=['foo.txt'], l=True, r=False, v=False, w=False)
Namespace(file=None, l=True, r=True, v=False, w=False)
usage: arg_parse_test.py [-h] [-l] [-w] [-r] [-v] [--file FILE]
arg_parse_test.py: error: w r v arguments require a file

您需要添加互斥的参数组,请查看,如果您在实现时遇到特殊困难,请告诉我们。@Eric,如何将标记(例如,-l)与带有强制参数的标记组(例如(-w,-r,-v)文件)组合起来?