当运行以下代码时:
KEEP=[]
for file in glob.glob("./KEEP/thing*.[tT][iI][fF]"):
m = pattern.search(file)
filename=m.group(1)
keep=Image.open(file)
keep.load()
KEEP.append(keep)
KEEP_NAMES.append(filename)
keep.close()
在超过一千个文件中,我收到了错误消息:
Traceback (most recent call last):
File "/hom/yannis/texmf/python/remove-harakat.py", line 123, in <module>
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2237, in open
IOError: [Errno 24] Too many open files: './KEEP/thing1118_26.TIF'
我不明白为什么会发生这种情况,因为我已经使用load()函数加载了所有文件并使用close()函数关闭了它们,为什么它们还是保持打开状态呢? 除了减少文件数量之外(这对我来说不是选项),是否有其他解决方法?有没有一些方法可以在将文件内容读入内存后关闭它们?
keep.close()
,因为keep.load()
应该在后台加载文件数据然后丢弃文件对象。也许它有一些副作用?我还在努力复现错误,但可以尝试删除 close 看看是否有帮助。 - KobeJohn