2011-09-26 25 views
5

Tengo un problema con una función de uso en Python. Esta es una parte de mi función principal:la función de uso no funciona con getopt

def main(argv): 
    try: 
      opts, args = getopt.getopt(argv, 'hi:o:tbpms:', ['help', 'input=', 'output=']) 
      if not opts: 
        print 'No options supplied' 
        usage() 
    except getopt.GetoptError,e: 
      print e 
      usage() 
      sys.exit(2) 

    for opt, arg in opts: 
      if opt in ('-h', '--help'): 
        usage() 
        sys.exit(2) 
if __name__ =='__main__': 
    main(sys.argv[1:]) 

y definir una función de uso, así

def usage(): 
    print "\nThis is the usage function\n" 
    print 'Usage: '+sys.argv[0]+' -i <file1> [option]' 

pero cuando ejecuto mi código como ./code.py o ./code.py -h (es ejecutable) Tengo todo menos la ayuda de Python.

+0

¿Qué quiere decir con "anything but the python help"? ¿Cuál es exactamente el resultado en cada una de esas situaciones? Tu código parece ser correcto. – agf

+0

'uso: python [opción] ... [-c cmd | -m mod | archivo | -] [arg] ... ' – Alejandro

+0

Necesitará mostrarnos más código. No veo qué está desencadenando la línea de uso de Python en lo que has pegado. – agf

Respuesta

5

Lo siguiente funcionó para mí. Ejecútelo con "python code.py".

import getopt, sys 

def usage(): 
    print "\nThis is the usage function\n" 
    print 'Usage: '+sys.argv[0]+' -i <file1> [option]' 

def main(argv): 
    try: 
    opts, args = getopt.getopt(argv, 'hi:o:tbpms:', ['help', 'input=', 'output=']) 
    if not opts: 
     print 'No options supplied' 
     usage() 
    except getopt.GetoptError,e: 
    print e 
    usage() 
    sys.exit(2) 

    for opt, arg in opts: 
    if opt in ('-h', '--help'): 
     usage() 
     sys.exit(2) 

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

"No recibí un error" no es una respuesta a "¿por qué recibí un error?". – agf

+0

@agf Sí, es cierto. Esto está aquí en caso de que su objetivo real fuera obtener código de trabajo. Si solo está interesado en saber por qué su código no funcionó, supongo que esto no es tan útil. – BenH

+0

gracias por su ayuda, eliminando el '-' de' if opt in ('-h', '--help'): 'parece funcionar para mí ... GRACIAS – Alejandro

Cuestiones relacionadas