Con optparse
, ¿hay una manera simple de definir las opciones negativas, por ejemplo, --no-cleanup
?Opciones booleanas negativas --no-whatever en optparse?
lo hice de esta manera, pero es engorroso y error propenso, especialmente debido a la comprobación None
que es fácil de olvidar y dejar de lado:
#!/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:])
Idealmente me gustaría hacer algo como Getoptions::Long
en Perl, donde puedo definir una opción cleanup
como booleana y luego proporcionará automáticamente --cleanup
y --no-cleanup
y estableceré mi variable booleana en consecuencia.
argparse tiene esta funcionalidad, ¿o no es una opción? – jterrace
@jterrace: uso Python v2.6, así que creo que no tengo argparse. – Frank
@Frank, argparse se ejecuta en python2.6, simplemente no está en la biblioteca estándar. Si tiene setuptools, 'easy_install argparse' siempre ha funcionado bien para mí. – mgilson