2011-11-27 109 views
2

如果用户使用可选参数-o,那么用户也必须使用参数-b。 但是,仅当用户设置参数-o时,必须使用-b参数。argparse结合可选参数

import argparse 

if __name__ == '__main__': 

    parser = argparse.ArgumentParser() 
    parser.add_argument('-f', nargs='?', required=True) 
    parser.add_argument('-o', nargs='?', required=False) 
    parser.add_argument('-b', nargs='?', required=????) 

    args = parser.parse_args() 

怎么可能解决这一问题?

回答

2

添加测试args = parser.parse_args()后:

if args.o and not args.b: 
    print >> sys.stderr, 'The -b option is required whenever -o is specified' 
    sys.exit(1)