Optparse和很多if条件

2024-05-11 14:15:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  1. 我真的需要使代码与python2.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

我想这是可以的,但我真的不认为这是Python。有没有更好的方法来检查这种情况?你知道吗

干杯


Tags: or代码addparser参数valuematchstatus
2条回答

您可以定义一组必需的选项,例如。。。你知道吗

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

检查一下

if not all(required_options):
    ...

你可以通过以下方式让它变得更好:

if None in (options.monitor, options.service, options.status, options.match,
             options.value):

但是,如果您仅限于optparse,那么它被设计为处理可选参数,似乎没有更好的方法。你知道吗

相关问题 更多 >