1

我正在从多扩展 FITS 文件中提取扩展,操作数据,并将数据(带有扩展的标题信息)保存到新的 FITS 文件中。

据我所知, pyfits.writeto() 完成了这项任务。但是,当我以数组的形式给它一个数据参数时,它给了我错误:

    'AttributeError: 'numpy.ndarray' object has no attribute 'lower''

这是我的代码示例:

    'file = 'hst_11166_54_wfc3_ir_f110w_drz.fits'
     hdulist = pyfits.open(dir + file)'
     sci = hdulist[1].data # science image data
     exp = hdulist[5].data # exposure time data
     sci = sci*exp # converts electrons/second to electrons
     file = 'test_counts.fits'

     hdulist.writeto(file,sci,clobber=True)

     hdulist.close()

我很感激这方面的任何帮助。提前致谢。

4

2 回答 2

1

您混淆了方法功能HDUList.writeto writeto

您调用的是调用时返回的对象上的方法。您可以将此对象视为原始 FITS 文件的文件句柄。您可以就地操作此对象并将其写入新文件或保存更新(如果您在 中打开文件)。HDUListpyfits.openmode='update'

另一方面,该writeto 功能不依赖于任何现有文件。它只是一个将数组写入文件的高级函数。在您的示例中,您可以编写电子计数数组,例如:

pyfits.writeto(filename, data)

这将使用 PRIMARY HDU 中的阵列数据创建一个单 HDU FITS 文件。

请注意文档本节顶部的警告:http: //docs.astropy.org/en/v1.0.3/io/fits/index.html#convenience-functions

像这样的函数pyfits.writeto是为了方便交互工作,但不建议在将重复运行的代码中使用,例如在脚本中。相反,请查看这些说明以开始。

于 2015-08-04T14:27:57.867 回答
-1

这可能是因为您应该使用hdulist.writeto(file, clobber=True). 只有一个必需的参数: https ://pythonhosted.org/pyfits/api_docs/api_hdulists.html#pyfits.HDUList.writeto 如果你给出第二个参数,它output_verify应该是一个字符串,而不是一个numpy数组。这可能解释了你的AttributeError ....

于 2015-08-01T12:23:33.723 回答