使用 astropy.io 读取大量 FITS 时出现 OSError 24(打开文件过多)

2023-11-21

我正在尝试使用以下命令将一些 2000 FITS 加载到内存中astropy.io.fits:

def readfits(filename):
    with fits.open(filename) as ft:
        # the fits contain a single HDU
        data = ft[0].data
    return data

data_sci = []
for i in range(2000):
    data_sci.append(readfits("filename_{}.fits".format(i)))

然而,当到达第1015个文件时,OSError: [Errno 24] Too many open files被提出。

我有同样的问题:

def readfits(filename):
    ft = fits.open(filename) as ft:
    data = ft[0].data
    ft.close()
    return data

我怀疑astropy.io.fits没有正确关闭文件。有没有 我可以强制关闭文件吗?


Your readfits函数实际上使文件句柄保持打开状态以保持对数据的访问,因为默认情况下它会创建一个mmap到数据并且不会将其完全读入物理内存,如下所示:http://astropy.readthedocs.org/en/latest/io/fits/appendix/faq.html#i-m-opening-many-fits-files-in-a-loop-and-getting-oserror-too-many-打开文件

顺便说一句,如果您只想要一个从第一个 HDU 读取数据的函数,则该函数已经内置:http://docs.astropy.org/en/v1.0.5/io/fits/api/files.html#astropy.io.fits.getdata

没有必要重新发明轮子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 astropy.io 读取大量 FITS 时出现 OSError 24(打开文件过多) 的相关文章

随机推荐

  • 模拟文本输入字段上的退格键

    有人可以提供一个很好的例子来模拟退格键 on a
  • 更改java控制台输出的颜色

    我想知道是否有什么办法可以设置我在 Java 中输出到控制台的文本的颜色 是否特定于系统并不重要 因为该程序只能在我的 Windows 7 x64 笔记本电脑上运行 这个问题 在 java eclipse 控制台中更改颜色几周前被问到 并且
  • 写入Main Bundle 目录。允许吗?

    我非常确定在 iOS 中不可能在主 Bundle 中写入 例如如下操作 NSString path NSBundle mainBundle pathForResource Data ofType plist something xmlDat
  • Three.js 截图

    我需要制作网站的屏幕截图 我尝试使用 html2canvas 和所有它的工作 但问题是我正在使用 THREE WebGLRenderer 和 THREE CSS3DRenderer 用于 webgl 中的 html 所以当我制作屏幕截图时
  • 如何为相同大小分区的 Spark RDD 定义自定义分区器,其中每个分区具有相同数量的元素?

    我是 Spark 新手 我有一个大型元素数据集 RDD 我想将其划分为两个大小完全相同的分区 以保持元素的顺序 我尝试使用RangePartitioner like var data partitionedFile partitionBy
  • 序列化有时是数组的 Json 属性[重复]

    这个问题在这里已经有答案了 有没有什么方法可以在一次操作中序列化从十进制到十进制 的 Json 对象属性 在我的 Json 产品提要中 特价商品表示为数组 正常价格 促销价格 普通商品只是价格 就像这样 product umbrella p
  • C++ 未处理的异常

    如果发生未处理的异常 C 是否提供了一种 显示 可视化内容的方法 我想做的是做一些像assert unhandled exception msg 如果它确实发生 如下面的示例所示 include
  • Android 未解决的主机异常

    我尝试使用以下方法从 Android 应用程序调用 RESTful Web 服务 HttpHost target new HttpHost http ServiceWrapper SERVER HOST ServiceWrapper SER
  • Git 哈希值是如何计算的?

    我试图了解 Git 如何计算 refs 的哈希值 git ls remote https github com git git 29932f3915935d773dc8d52c292cadd81c81071d refs tags v2 4
  • 如何在 Qt 中通过以太网播放流媒体音频?

    我的目标是通过 LAN 网络无延迟或最少延迟地传输 wav 文件 我们还按部分读取服务器计算机上的文件 均为 320 字节 之后我们通过 UDP 发送数据包并将接收写入 jitter buffer 中 抖动缓冲区的大小为 10 为了获得清晰
  • 部署带有嵌入式sqlite的winform应用程序

    我正在部署一个使用 vs 2008 0n XP sp3 构建的 winform 应用程序 我创建了一个带有空架构的数据库 将其放入项目的根文件夹和我选择的属性中Build Action 嵌入式资源 and Copy to Output di
  • iPhone:安装 SSL 连接证书

    我希望我的应用程序在设备上安装 SSL 证书 使其能够访问我的 https 网站 任何建议将不胜感激 谢谢 我发现最好的方法是执行以下操作 1 使用桌面浏览器将证书保存到本地 2 给自己写一封电子邮件 并将证书作为附件 3 在您的 iOS
  • 用于新闻源的 Firebase 扇出结构

    我有一个数据库posts users以及其他节点 例如经典的社交媒体应用程序 我正在继续对我的应用程序实施最佳实践 现在我想重写我的新闻报道 我关注的用户帖子 如 Instagram 中的主页选项卡 我读过一些关于fan out策略 现在我
  • 如何使用 CarrierWave 从 S3 获取真实文件

    我有一个读取文件内容并为其建立索引的应用程序 我将它们存储在磁盘本身中 但现在我使用 Amazon S3 因此以下方法不再有效 事情是这样的 def perform docId document Document find docId if
  • 声明与 TypeScript 一起使用的 JS 库

    有很多类似问题的线程 但据我所知 这个线程是独一无二的 我在用着jQuery 地址插件在我的应用程序中 并想在 TypeScript 文件中使用它 不幸的是 这儿没有绝对打字可用于库的脚本 当我尝试使用 jQuery address 时 我
  • 无法使用 Hibernate/PostgreSQL 将欧洲符号存储到 LOB 字符串属性中

    我在使用 Hibernate 3 6 10 的 PostgreSQL 8 4 中将特殊字符 如欧元符号 写入和读回 LOB 字符串属性时遇到问题 我所知道的是 PostgreSQL 提供了两种不同的方法来在表的列中存储大字符对象 它们可以直
  • 获取最新的ajax请求并中止其他请求

    我一直在寻找 这个问题看起来很简单 但找不到答案 我有多个请求调用不同的网址 但对于每个 url 我只想要一次结果 并且它必须是被调用的同一 url 中的最后一个结果 我现在的问题是 如何只得到最后一个 我看了一下这个 好像是3年前的了 h
  • Vista 从设置中安排任务

    我正在使用 Visual Studio 2008 中的安装向导项目部署 C 应用程序 让 Windows 安排我的应用程序定期运行 例如每 8 小时 的最简单方法是什么 我更喜欢在应用程序安装期间进行此调度 以简化最终用户的设置 Thank
  • TFS2015 中的构建 $(System.DefaultWorkingDirectory) 在哪里设置?

    我正在尝试修改此变量的值 因为它当前指向在代理上运行的任何构建的源文件夹 而不是构建的根目录 有谁知道我可以在哪里修改这个变量 我查看了代理的配置 json 文件 但没有找到任何相关内容 您可以定义 System DefaultWorkin
  • 使用 astropy.io 读取大量 FITS 时出现 OSError 24(打开文件过多)

    我正在尝试使用以下命令将一些 2000 FITS 加载到内存中astropy io fits def readfits filename with fits open filename as ft the fits contain a si