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.