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
「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
これでループに入ったので、「継続」ステートメントを使用することもできます。
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
ステートメントをexceptブロックに含めますあなたの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。