Skip to main content
 首页 » 编程设计

python之Optparse 和很多 if not

2025年05月04日29arxive

我正在开发一个接收一些参数并希望其中一些参数成为必需参数的程序,但我遇到了一些问题:

  1. 我确实需要使代码与 Python 2.4.x 兼容,所以我(至少是这么认为)只能使用 optparse
  2. 希望避免代码晦涩难懂

这是我做的:

def usage(): 
    parser = OptionParser() 
    parser.add_option('-i', '--item', dest='item') 
    parser.add_option('-m', '--monitor', dest='monitor') 
    parser.add_option('-s', '--service', dest='service') 
    parser.add_option('-u', '--status', dest='status') 
    parser.add_option('-a', '--match', dest='match') 
    parser.add_option('-v', '--value', dest='value') 
    parser.add_option('-o', '--hostname', dest='hostname', default='') 
    parser.add_option('-t', '--test', action='store_true', dest='test') 
    parser.add_option('-U', '--url', dest='URL', default='') 
    parser.add_option('--verbose', action='store_true', dest='verbose') 
 
    (options, args) = parser.parse_args() 
 
    if not options.item or not options.monitor or not options.service or \ 
                           not options.status or not options.match or \ 
                           not options.value: 
        parser.print_help() 
        sys.exit(-1) 
 
    return options 

我想这没问题,但我真的不认为这是 Pythonic。有没有更好的方法来进行这种条件检查?

干杯,

请您参考如下方法:

您可以定义一组必需的选项,例如...

required_options = [options.monitor, options.service, ...] 

检查

if not all(required_options): 
    ...