Я пытаюсь навсегда изменить заголовки подгонки, используя astropy. Hdu.writeto добавил «None» в файл подгонки. - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу

  1. прочитать в файле соответствия
  2. изменить некоторые заголовки
  3. сохранить его с изменениями в новом файле соответствия.

До сих пор, я думаю, я достиг этого, однако новый файл соответствий имеет "None", когда я выполняю hdu.info ().Я запутался, что это значит, почему он есть, и это плохо?

Я вставлю нижеприведенный код с соответствующими выходными данными:

from astropy.io import fits
hdulist = fits.open('2D_comb_ff_wavcal_red_sci_2.fits')
hdu = hdulist[0]
hdulist.info()
Filename: 2D_comb_ff_wavcal_red_sci_2.fits 
No.    Name      Ver    Type      Cards   Dimensions   Format 
 0  PRIMARY       1 PrimaryHDU     287   (1024, 1024)   float32  
print 'CRVAL1 then = ', hdu.header['CRVAL1']
print 'CRVAL2 then = ', hdu.header['CRVAL2']
CRVAL1 then =  14975.1660156 
CRVAL2 then =  1.0
CRVAL1_orig = hdu.header['CRVAL1']
CRVAL2_orig = hdu.header['CRVAL2']

hdu.header['CRVAL1'] = CRVAL2_orig
hdu.header['CRVAL2'] = CRVAL1_orig

print 'CRVAL1 now = ',  hdu.header['CRVAL1']
print 'CRVAL2 now = ',  hdu.header['CRVAL2']
CRVAL1 now =  1.0 
CRVAL2 now =  14975.1660156 
hdu.writeto('newheader.fits', overwrite=True)
new = fits.open('newheader.fits')
print new.info()
Filename: newheader.fits 
No.    Name      Ver    Type      Cards   Dimensions   Format 
  0  PRIMARY       1 PrimaryHDU     287   (1024, 1024)   float32   
None

Заголовки обновлены (я проверял), но почему здесь написано "Нет"?Является ли hdu.writeto () неправильным?Я пытался читать о flush (), но это меня смутило.

Спасибо

1 Ответ

0 голосов
/ 11 сентября 2018

Это потому, что вы печатаете то, что возвращается с .info().Обратите внимание, что в четвертой строке у вас есть

hdulist.info()

без print, но вы получите ожидаемый результат.Более того, вы правильно получаете

0 PRIMARY 1 PrimaryHDU 287 (1024, 1024) float32 

, когда звоните new.info().Таким образом, суммируя, это сам метод, который печатает, вероятно, ничего не возвращая или не возвращая None по умолчанию, и, поскольку вы print это, он отображается в виде строки.

Просто удалите последний print.

...