在 Pillow 中打开和加载图像时出现“打开文件过多”错误

2024-01-13

当运行以下代码时:

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'

我不明白为什么会发生这种情况,因为我正在加载()然后关闭()所有文件,为什么它们应该保持打开状态? 除了减少文件数量(这对我来说不是一个选择)之外,还有其他解决方案吗?在将其内容读取到内存中后,有什么方法可以关闭它们吗?


这可能是一个错误Image.load方法-参见枕头问题 #1144 https://github.com/python-pillow/Pillow/issues/1144。我也遇到了同样的情况too many open files错误 - 请参阅#1237 https://github.com/python-pillow/Pillow/issues/1237.

我的解决方法是将图像加载到临时对象中,制作副本,然后显式关闭临时对象。对于您的代码,它看起来像这样:

KEEP=[]
for file in glob.glob("./KEEP/thing*.[tT][iI][fF]"):
    m = pattern.search(file)
    filename = m.group(1)
    temp = Image.open(file)
    keep = temp.copy()
    KEEP.append(keep)
    KEEP_NAMES.append(filename)
    temp.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pillow 中打开和加载图像时出现“打开文件过多”错误 的相关文章

随机推荐

  • Android 相机 - 预览尺寸、图片尺寸、裁剪和扭曲

    我的应用程序需要以纵向模式捕获一些给定尺寸 比如说宽x高 的图片 一般情况下 相机不支持我想要的尺寸 宽x高 因此我需要裁剪拍摄的图片以符合我的规格 这个看似简单的程序让我对预览和图片尺寸和格式之间 良好 对应的问题感到疯狂 让我解释 我需
  • android.database.sqlite.SQLiteException:无法将 Android 短信数据库的数据库从版本 58 降级到 55

    当我的 Android 应用程序尝试读取 Android 短信数据库时 我遇到此崩溃 读取android短信数据库的代码类似于以下代码片段 String SMS URI content sms Uri uri Uri parse SMS U
  • 如何在 Windows 上用 C/C++ 为文件预分配空间?

    我正在向使用纯 C 函数的现有代码库添加一些功能 fopen fwrite fclose 将数据写入文件 不幸的是 我无法更改文件 i o 的实际机制 但我必须为文件预先分配空间以避免碎片 这会影响读取期间的性能 有没有比实际将零或随机数据
  • WebRTC 视频不显示

    我正在创建一对一的 webrtc 视频聊天室 但此代码不起作用 我想知道为什么 function hasUserMedia navigator getUserMedia navigator getUserMedia navigator we
  • 从 Android 设备发送 HTTPS/HTTP POST 时出现 UnknownHostException

    我正在尝试创建一个到 Google 服务器的 HTTP POST 来获取 ClientLogin Auth 如所述here http code google com android c2dm index html push 这篇文章的源代码
  • 视图中的 ASP.NET Web Api [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在这种情况下通过 webapi 创建一个登录页面 我不想使用令牌 但视图应该是安全的 不是直接在 URL 中调用 如果用户是管理员
  • CSS 替代行 - 隐藏一些行

    我正在尝试设计表格 使每一行都有不同的颜色 奇数 偶数 我有以下 CSS woo tr nth child even td background color f0f9ff woo tr nth child odd td background
  • 两阶段查找 - 需要解释

    编译器使用两阶段查找来编译模板类是什么意思 模板被编译 至少 两次 如果没有实例化 则会检查模板代码本身的语法 例如 任何语法错误 例如 etc 在实例化时 当确切类型已知时 将再次检查模板代码以确保所有调用对于该特定类型都有效 例如 模板
  • httr 有时会将 URL 中的“%”替换为“%25”

    使用时httr GET 在某些查询中它会替换 具有安全代表 25 但在其他查询中则不然 我找不到任何规则可以实现这种情况 我正在使用 httr 1 4 1 示例查询在哪里 被替换 请注意错误代码 并且输入的 URL 与返回的响应对象中的 U
  • Google Chromecast SDK 在后台拆解

    使用 iOS Sender API 框架 当我的应用程序进入后台时 SDK 会断开所有连接 并且我无法启动更多媒体 直到应用程序返回前台 我的应用程序播放音频并允许在后台运行和流式传输 是否有一个选项可以告诉 Googlecast 框架保持
  • 从 C# 中的 Richtextbox 中选择文本

    我想选择 RichTextBox 文本的最后一个 和 之间的文本 我有下一个代码 但 LastIndexOf 函数有错误 我不知道如何修复它 有人可以给我一些帮助吗 private void highlightText mRtbxOpera
  • 我应该如何将 Java 代码转换为 C# 代码?

    我正在将 Java 库移植到 C 我使用的是 Visual Studio 2008 因此没有已停止使用的 Microsoft Java 语言转换助手程序 JLCA 我的方法是创建一个与 Java 库类似的项目结构的新解决方案 然后将 jav
  • 单元测试 ASP.NET MVC 重定向

    如何对 MVC 重定向进行单元测试 public ActionResult Create Product product productTask Save product return RedirectToAction Success pu
  • 我可以将本机依赖项放在子文件夹中吗

    当我发布 dotnet core 项目时 它生成了一个文件夹 其中包含数百个框架和本机运行时文件 我知道这些文件是使一切正常工作所必需的 但是我可以将它们移到子文件夹中并仍然让我的应用程序运行吗 例如 MYAppFolder MyApp e
  • 为什么在 collections.deque 中间添加或删除比在那里查找慢?

    This wiki python org https wiki python org moin TimeComplexity关于某些数据结构的算法复杂性的页面说以下内容collections deque object deque 双端队列
  • 在自定义文本区域中显示插入符号而不显示其文本

    我有一个自定义文本区域 在此示例中 它随机地将字母变为红色或绿色 var mydiv document getElementById mydiv myta document getElementById myta function upda
  • 填写 BigQuery 中联接表的缺失值

    我在 BigQuery 中有一个表 其中包含发生某些交易时每天的净库存数量以及包含价格历史记录的表 如下所示 WITH trans AS SELECT DATE 2018 10 02 trans date 10 0 quantity UNI
  • 即使提供记录 ID 也无法更新嵌套属性

    我正在尝试更新嵌套记录 但由于某种原因它不起作用并且我的更新操作被忽略 如果我在控制台中运行以下代码 它会返回 true 但 field values attributes 实际上没有更新任何内容 只有 steps attributes 按
  • JIRA JQL:按阻止状态对卡片进行着色

    我正在尝试使用 JIRA Agile 的 卡片颜色 功能以及 ScriptRunner 插件 为 JIRA Agile 板上的阻塞卡片着色 我对 被阻止 的定义是 票证具有 被阻止 字段的值 或者以 被阻止 关系链接到未解决的票证 我能做的
  • 在 Pillow 中打开和加载图像时出现“打开文件过多”错误

    当运行以下代码时 KEEP for file in glob glob KEEP thing tT iI fF m pattern search file filename m group 1 keep Image open file ke