假设我对myprog有一些用法:
myprog.py [-h] [-d DEPTH] [-v] [--version] URL [URL ...]
现在我只想在指定了single位置参数URL
时才允许-d DEPTH
选项。例如,这是一个正确的命令:
my_prog.py http://stackoverflow.com -d 5
my_prog.py http://stackoverflow.com http://google.com
但不应允许使用此URL(URL数大于1):
my_prog.py http://stackoverflow.com http://google.com -d 5
所以,现在我试着检查这个案子如下:
parser = get_parser()
args = vars(parser.parse_args())
if args['depth'] > 1:
if len(args['url']) != 1:
parser.error('DEPTH parameter is allowed with single URL')
return
我认为这个解决办法不太好。你知道吗
想必你也不愿意
也就是说,在URL参数之前指定了
-d
。因为参数可以按任意顺序给出,所以在解析完成后测试它们是最有意义的——就像您正在做的那样。你知道吗可以构造自定义操作类来测试这样的事情,但是逻辑变得更加复杂。“url”操作必须测试以前的'-d'设置,'-d'必须测试“url”属性,等等
相关问题 更多 >
编程相关推荐