Python 更新PyBin表数据

Python 更新PyBin表数据,python,numpy,pyfits,Python,Numpy,Pyfits,我正在尝试使用pyfits更新现有fits表。对于表中的某些列,它工作正常,但不幸的是,对于第一列,情况并非如此。 以下是列定义: ColDefs( name = 'EVENT_ID'; format = '1J'; bscale = 1; bzero = 2147483648 name = 'TEL_ID'; format = '1I' name = 'TIMESLICE'; format = '1I'; null = 0... 以及更新它的简单代码片段: event = pyfits.op

我正在尝试使用pyfits更新现有fits表。对于表中的某些列,它工作正常,但不幸的是,对于第一列,情况并非如此。 以下是列定义:

ColDefs(
name = 'EVENT_ID'; format = '1J'; bscale = 1; bzero = 2147483648
name = 'TEL_ID'; format = '1I'
name = 'TIMESLICE'; format = '1I'; null = 0...
以及更新它的简单代码片段:

event = pyfits.open('file.fits.gz')[1]
event.data.field('EVENT_ID')[0] = np.uint32(event.event_ID)
event.data.field('TEL_ID')[0] = int(tel.ID[2])
event.writeto('test.fits')
编写电话号码(以及此处未显示的其他号码)有效,而事件号码无效。我已经尝试过不同的格式(np.int32,int),但总是一样的

type(event.data.field('EVENT_ID')[0]) 
返回numpy.uint32(对于未修改的文件)

谢谢你的帮助

编辑:


如果我更改了“EVENT_ID”的定义,省略了“bscale”和“bzero”,则值的更新会起作用。因此,无符号整数似乎有问题。

是否有任何错误,还是忽略了它?作为旁白,您可以使用
data['EVENT\u ID']
而不是
data.field('EVENT\u ID')
。没有真正的区别,前者更清晰。没有错误消息,“test.fits”只包含未修改的值。我认为这是一个bug。我稍后会调查。为了澄清,我已经确认这是一个bug。不过我还没来得及完成修复。是的,它只与无符号整数有关。到目前为止,FITS在本机上还不支持无符号整数,需要bzero黑客来绕过它。如果现在可以使用签名整数,这是一个很好的解决方法。也可以通过对一些内部方法进行猴子补丁来解决这个问题,但我不知道现在这对您有多重要…?是否有任何错误,或者它只是忽略了它?顺便说一下,您可以使用
data['EVENT\u ID']
而不是
data.field('EVENT\u ID')
。没有真正的区别,前者更清晰。没有错误消息,“test.fits”只包含未修改的值。我认为这是一个bug。我稍后会调查。为了澄清,我已经确认这是一个bug。不过我还没来得及完成修复。是的,它只与无符号整数有关。到目前为止,FITS在本机上还不支持无符号整数,需要bzero黑客来绕过它。如果现在可以使用签名整数,这是一个很好的解决方法。也可以通过修补一些内部方法来解决这个问题,但我不知道现在这对你有多重要。。。?