python 的 argparse 中相互 include/exclude 个选项

mutually include/exclude options in python's argparse

如何描述 python 的 argparse

的以下参数语法

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

['-w','-r','-v'] 之一,具有强制性 文件

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