You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IRAF运行imstat命令时如何忽略损坏fits文件继续执行

FITS批量统计跳过损坏文件配置方法

问题现象

现有3个FITS格式图像,分别为file1.fits、file2.fits、file3.fits,其中file2.fits为截断损坏的文件:

  • 执行imheader命令可正常读取头信息,返回结果:
file1.fits[1092,736][ushort]: bias
file2.fits[1092,736][ushort]: ASAS135406
file3.fits[1092,736][ushort]: flat
  • 执行imstat做像素统计时触发报错:
ERROR: Pixel storage file is truncated (file2.fits)

默认执行逻辑下,命令遇到损坏文件会直接终止进程,仅能返回排在坏文件之前的正常图像统计结果,无法完成后续file3.fits的统计操作。

操作方案

imstat本身没有提供内置的"跳过错误文件"开关,不要尝试修改系统全局错误抑制参数——这类操作会屏蔽所有报错,后续遇到其他类型的文件错误也不会提示,很容易引发隐蔽的数据问题。最稳妥的实现方式是逐文件循环执行,单独捕获单个文件的报错后跳过,不中断整体流程:

  • 如果在IRAF/PyRAF的CL环境下操作,使用带错误捕获的循环即可:
string filelist = "file1.fits,file2.fits,file3.fits"
string curfile

for (curfile = filelist; curfile != ""; curfile = substr(curfile, stridx(",", curfile)+1, strlen(curfile))) {
    print("当前处理: "//curfile)
    # 捕获单文件执行错误,报错直接跳过
    {
        imstat(curfile)
    } catch {
        print("* 文件损坏,已跳过: "//curfile)
    }
}
  • 如果直接在Linux Shell下调用imstat命令,用shell循环判断命令返回值即可实现跳过逻辑:
#!/bin/bash
for fits in *.fits; do
    echo "当前处理: $fits"
    # 执行统计,判断返回值,非0即为执行失败
    if ! imstat "$fits" 2>/dev/null; then
        echo "* 文件损坏,已跳过: $fits"
    fi
done

这种方式只会跳过触发读取错误的损坏文件,剩余正常文件的统计流程会全部跑完,同时不会屏蔽其他类型的操作报错,不会影响后续其他任务的错误提示。

内容的提问来源于stack exchange,提问作者Pritam Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:06:08