Argumentos con OptionParser 2007-03-05
En la versión 2.3 de Python se añadió el módulo optparse a la librería estándar, el cual nos sirve para parsear las opciones y argumentos que se pasan a nuestros programas, haciendo fácil y cómodo el lidiar con ellos.
Pondré un ejemplo:
from optparse import OptionParser
if __name__ == '__main__':
usage = "%prog [options] arg1 arg2"
parser = OptionParser(usage=usage, version="%prog 1.0")
parser.add_option('-v','--verbose', action='store_true',
dest='verbose', help='shows detailed information')
parser.add_option('-q','--quiet', action='store_false',
dest='verbose', help='hides detailed information')
parser.add_option('-f','--filename', action='store',
dest='filename', help='name of the file to load')
(options, args) = parser.parse_args()
if options.verbose:
print "Extra info enabled"
else:
print "Extra info disabled"
if options.filename:
print "I'll open", options.filename, "file."
if args > 0:
print "\nArguments:"
for x in args:
print " ",x
Ahora veamos algunos resultados según los argumentos que pasemos (en negrita el comando ejecutado):
$ python option.py Extra info disabled
$ python option.py -v Extra info enabled
$ python option.py -h
usage: option.py [options] arg1 arg2
options:
--version show program's version number and exit
-h, --help show this help message and exit
-v, --verbose shows detailed information
-q, --quiet hides detailed information
-f FILENAME, --filename=FILENAME
name of the file to load
$ python option.py -f fichero.txt "First" "Second" "Last argument" Extra info disabled I'll open fichero.txt file. Arguments: First Second Last argument
Fijaos que distingue las opciones de los argumentos, como se puede ver en el último ejemplo.
Nota: He escrito los ejemplos en inglés para no desencajar, porque las cadenas que imprime el módulo están en inglés, aunque estaría bien que pudiera hacerlo en otros idiomas.