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
在这里,我试图打印的所有文件的大小,在一个目录(和子)。 但我知道im
是当范围,线外im.size
。 但怎么回事做呢,而不使用else
或finally
块。
示出了以下错误:
Traceback (most recent call last):
File "batch.py", line 13, in <module>
print im.size
NameError: name 'im' is not defined
什么是错的“其他”条款?
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
现在,因为你在一个循环的时候,你也可以使用一个“继续”语句:
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
如果您无法打开文件作为图像,只希望在有效图像工作,那么包括continue
语句您的拦网除外,将带你到你的下一个迭代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)
此外,没有;
在Python。