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:

  1. from optparse import OptionParser  
  2.   
  3. if __name__ == '__main__':  
  4.     usage = "%prog [options] arg1 arg2"  
  5.   
  6.     parser = OptionParser(usage=usage, version="%prog 1.0")  
  7.     parser.add_option('-v','--verbose', action='store_true',  
  8.                       dest='verbose', help='shows detailed information')  
  9.     parser.add_option('-q','--quiet', action='store_false',  
  10.                       dest='verbose', help='hides detailed information')  
  11.     parser.add_option('-f','--filename', action='store',  
  12.                       dest='filename', help='name of the file to load')  
  13.   
  14.   
  15.     (options, args) = parser.parse_args()  
  16.   
  17.     if options.verbose:  
  18.         print "Extra info enabled"  
  19.     else:  
  20.         print "Extra info disabled"  
  21.     if options.filename:  
  22.         print "I'll open", options.filename, "file."  
  23.     if args > 0:  
  24.         print "\nArguments:"  
  25.         for x in args:  
  26.             print "  ",x  

Ahora veamos algunos resultados según los argumentos que pasemos (en negrita el comando ejecutado):

$ python option.py

Extra info disabled
  1. <b>$ python option.py -v</b>  
  2.   
  3. Extra info enabled  
  1. <b>$ python option.py -h</b>  
  2.   
  3. usage: option.py [options] arg1 arg2  
  4.   
  5. options:  
  6.   --version             show program's version number and exit  
  7.   -h, --help            show this help message and exit  
  8.   -v, --verbose         shows detailed information  
  9.   -q, --quiet           hides detailed information  
  10.   -f FILENAME, --filename=FILENAME  
  11.                         name of the file to load  
  1. <b>$ python option.py -f fichero.txt "First" "Second" "Last argument"</b>  
  2.   
  3. Extra info disabled  
  4. I'll open fichero.txt file.  
  5.   
  6. Arguments:  
  7.    First  
  8.    Second  
  9.    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.