[pyar] Un print comentado me cambia el flujo del programa

Tomas Zulberti tzulberti en gmail.com
Lun Jul 11 12:43:29 ART 2011


2011/7/11 Fernando <el.zoona en gmail.com>:
> Buenas, quiero consultar una cosita que no me cierra ni por
> casualidad. No entiendo por que pasa lo siguiente: pongamos que llamo
> mal al programa, usando -h aaaa, en ese caso el script me devuelve el
> "tryif". Ahora, si yo descomento la linea "print (opts[1])" el script
> pasa el try y va derecho al ultimo except. La cosa esta me paso
> mientras trataba de agarrar que si se mandaba un argumento sin opcion
> diera error (cosa que no hacia), pero sinceramente no entiendo por que
> una linea con un print cambia el flujo.
>
> import sys
> import getopt
>
> def usage():
>       print ("lalala")
>
> def main(argv):
>       try:
>               opts, args = getopt.getopt(argv, "hd:", ["h", "directory:"])
>               if ((args) and (opts !='-h')):
>                       #print (opts[1])
>                       print ("tryif")
>       except getopt.GetoptError:
>               usage()
>               sys.exit(2)
>       except :
>               print ("errorrrrrrrrrrrr")
>
> if __name__=='__main__':
>       main(sys.argv[1:])
>
> Con el print descomentado:
> [elzoona@ Desktop]$ python raro.py -h aaaa
> errorrrrrrrrrrrr
> Con el print comentado:
> [elzoona@ Desktop]$ python raro.py -h aaaa
> tryif


Seguramente lo que este pasando es que esta tirando una excepcion
cuando haces: opt[1]

Hacete un print(len(opt)), y fijate.

Si queres, tambien podes imprimir la excepcion:

except Exception, e:
    print(e)

Saludos,
Tomas Zulberti



More information about the pyar mailing list