zerodivisionerror try poner example como catch and python variables try-catch scope python-imaging-library

poner - Alcance variable y Try Catch en python



try if python (3)

¿Qué hay de malo con la cláusula "else"?

for filename in files: try: im = Image.open(os.path.join(dirname,filename)) except IOError, e: print "error opening file :: %s : %s" % (os.path.join(dirname,filename), e) else: print im.size

Ahora que estás en un bucle, también puedes usar una declaración de "continuar":

for filename in files: try: im = Image.open(os.path.join(dirname,filename)) except IOError, e: print "error opening file :: %s : %s" % (os.path.join(dirname,filename), e) continue print im.size

import Image import os for dirname, dirs, files in os.walk("."): for filename in files: try: im = Image.open(os.path.join(dirname,filename)) except IOError: print "error opening file :: " + os.path.join(dirname,filename) print im.size

Aquí estoy tratando de imprimir el tamaño de todos los archivos en un directorio (y sub). Pero sé que im fuera del alcance cuando está en la línea de im.size . Pero, ¿de qué otra manera lo hago sin usar else o finally bloques?

Se muestra el siguiente error:

Traceback (most recent call last): File "batch.py", line 13, in <module> print im.size NameError: name ''im'' is not defined


Si no puede abrir el archivo como una imagen y solo desea trabajar en imágenes válidas, incluya una instrucción de continue en su bloque de excepción que lo llevará a la siguiente iteración de su bucle for .

try: im = Image.open(os.path.join(dirname, filename)) except IOError: print ''error opening file :: '' + os.path.join(dirname, filename) continue


import Image import os for dirname,dirs,files in os.walk("."): for filename in files: try: im = Image.open(os.path.join(dirname,filename)) print im.size except IOError: print "error opening file :: " + os.path.join(dirname,filename)

Además, no ; en pitón.