使用IDL 7.1读取4.9G FITS图像报READU unit:100错误如何解决
报错成因
- 32位版本大文件读取限制:IDL 7.1的Mac版本默认提供32位运行环境,32位程序的内置IO接口最大仅支持读取小于2GB的单个文件,你要处理的FITS文件大小为4.9G,远超该阈值,三个读取函数底层都会调用内置
READU执行二进制读取,因此会统一触发该报错,这是该场景下最常见的诱因。 - 文件结构损坏:如果FITS文件在下载、传输、存储过程中出现丢包、截断,或者文件头元数据与实际数据块的大小、格式不匹配,也会导致
READU读取到不符合预期的内容时报错。 - 访问权限不足:当前运行IDL的用户没有目标FITS文件的读取权限,或者文件所在目录的访问权限受限,也会触发底层读取失败。
可行解决办法
- 切换64位IDL版本:如果条件允许,更换为IDL 8.0及以上的64位Mac版本,64位IDL原生支持超过2GB的大文件读取,不需要修改现有代码即可正常调用
readfits/mrdfits/fits_read读取目标文件。 - 拆分大尺寸FITS文件:如果无法更换IDL版本,可以先用支持大FITS文件读取的工具将4.9G的文件按天区、波段分割为多个小于2GB的子文件,再用IDL 7.1分别读取处理。
- 校验文件合法性:先在终端执行
ls -l /Users/lpr/Data/CANDELS_image.fits确认文件大小符合预期,再使用FITS校验工具检查文件结构是否完整,排除文件本身损坏的问题。 - 修正文件访问权限:在终端执行
chmod +r /Users/lpr/Data/CANDELS_image.fits为文件添加全局读取权限,排除权限限制导致的读取失败。
内容的提问来源于stack exchange,提问作者lpr
相关产品推荐
相关产品推荐

