Python使用astropy打开缺失SIMPLE关键字的FITS文件报错如何解决
解决方案
第一步:基础文件完整性排查
- 比对下载文件的MD5/SHA256校验值与数据源站公布的校验值是否一致,若不一致说明文件在下载过程中损坏,重新下载即可解决
- 检查文件后缀,若为
.gz、.bz2等压缩格式,需先完整解压再尝试读取,未解压的压缩文件无法被astropy直接识别为有效FITS - 查看文件大小,若文件小于2880字节(FITS头的最小块长度),说明文件为空,直接重新下载即可
第二步:手动注入SIMPLE关键字
如果上述排查无问题,可通过二进制读写直接修改文件头注入SIMPLE关键字,无需先通过astropy打开文件,单文件修改示例如下,批量处理可遍历文件列表复用逻辑:
file_path = "替换为你的FITS文件路径.fits" with open(file_path, "r+b") as f: # 标准SIMPLE头卡片,固定占80字节,符合FITS格式要求 simple_card = b"SIMPLE = T / conforms to FITS standard " # 读取当前第一个头卡片 current_first = f.read(80) if not current_first.startswith(b"SIMPLE ="): # 指针移到文件开头,写入SIMPLE卡片 f.seek(0) f.write(simple_card)
修改完成后再尝试用astropy打开:fits.open(file_path, ignore_missing_simple=True, lazy_load_hdus=False)
第三步:其他结构损坏排查
如果修改后仍然报错,说明文件存在除缺失SIMPLE关键字外的结构问题:
- 读取文件前2880字节打印查看,确认是否存在其他有效头关键字,排查是否存在头整体偏移、缺失的情况
- 若头内容完全为乱码,说明文件下载时出现不可逆损坏,只能更换下载源重新获取
内容的提问来源于stack exchange,提问作者orange
相关产品推荐
相关产品推荐

