Отрицательные логические параметры --no-whatever в optparse?

С помощью optparseесть ли простой способ определить отрицательные параметры , например, --no-cleanup?

Я сделал это таким образом, но это громоздко и подвержено ошибкам, особенно из-за проверки None, которую легко забыть и пропустить:

#!/bin/env python

from __future__ import print_function
import sys
import optparse

def main(argv):
    parser = optparse.OptionParser("usage: %prog [options]")
    parser.add_option("--no-cleanup",
                      dest = "cleanup",
                      action = "store_false",
                      help = "do cleanup at end?")

    (opts, args) = parser.parse_args()

    if opts.cleanup == None:
        opts.cleanup = True

    # do stuff ...

    if opts.cleanup:
        print("Cleaning up!", file = sys.stderr)
    else:
        print("Not cleaning up", file = sys.stderr)

if __name__ == "__main__":
    main(sys.argv[1:])

В идеале я хотел бы сделать что-то вроде Getoptions::Longв Perl, где я могу определить параметр cleanupкак логический, и тогда он автоматически предоставит --cleanupи --no -cleanupи соответственно установите мою логическую переменную.

8
задан Frank 29 March 2012 в 22:12
поделиться