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
如何描述 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