在python' argparse中相互包含/排除选项

时间:2018-02-06 09:44:13

标签: python-2.7 argparse

如何描述python' s argparse

的以下参数语法

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

OR

其中一个['-w','-r','-v']强制文件

1 个答案:

答案 0 :(得分:1)

argparse模块非常灵活,你应该看看使用组或子解析器本地实现你的目标。

但是,如果你只是想要将某些东西混在一起,那么你可以处理自己的条件:

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