程序应按如下方式执行:
./interpret.py --help | --source=FILE1 [--stats=FILE2 [--vars] [--insts]]
规则是:
- 如果通过了
- 必须提供source = FILE1,并且不能像--source FILE1那样传递
如果提供了--vars或--insts,则必须提供--stats = FILE2
- vars和--insts的顺序很重要,因此必须存储
禁止多次出现参数
我已经阅读了多个教程和SO答案,但他们甚至没有完全解决我的问题。管理以执行以下操作:
# parses command line arguments
def parse_args():
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('--source')
parser.add_argument('--stats')
parser.add_argument('--vars', action='count', default=0)
parser.add_argument('--insts', action='count', default=0)
parser.add_argument('--help', action='count', default=0)
try:
args = parser.parse_args()
catch SystemExit:
exit(ERR_PARAM)
if args.help > 0:
if args.source != None or args.stats != None or (args.help + args.vars + args.insts) != 1:
exit(ERR_PARAM)
manual()
exit(0)
if args.source == None:
exit(ERR_PARAM)
if args.vars > 1 or args.insts > 1:
exit(ERR_PARAM)
if (args.vars + args.insts) > 0 and args.stats == None:
exit(ERR_PARAM)
return args
代码存在以下问题:
- source和--stats可以多次传递
- source和--stats可以像--source FILE1
--vars --insts的顺序不存储在任何地方