Изменить значение ключевого слова в заголовке файла FITS
Я пытаюсь изменить значение ключевого слова в заголовке файла FITS. Довольно просто, это код:
import pyfits
hdulist = pyfits.open('test.fits') # open a FITS file
prihdr = hdulist[1].header
print prihdr['AREASCAL']
effarea = prihdr['AREASCAL']/5.
print effarea
prihdr['AREASCAL'] = effarea
print prihdr['AREASCAL']
Я печатаю шаги много раз, чтобы проверить правильность значений. И они. Проблема в том, что когда я проверяю файл FITS впоследствии, значение ключевого слова в заголовке не изменяется. Почему это происходит?
3 ответа
Вы открываете файл в режиме только для чтения. Это не помешает вам изменить любой из объектов в памяти, но закрытие или сброс в файл (как предложено в других ответах на этот вопрос) не внесет никаких изменений в файл. Вам необходимо открыть файл в режиме обновления:
hdul = pyfits.open(filename, mode='update')
Или еще лучше использовать оператор with:
with pyfits.open(filename, mode='update') as hdul:
# Make changes to the file...
# The changes will be saved and the underlying file object closed when exiting
# the 'with' block
Вам нужно закрыть файл или явно сбросить его, чтобы записать изменения обратно:
hdulist.close()
или же
hdulist.flush()
Интересно, что есть учебник для этого в github. Вот версия этого учебника для просмотра записной книжки ipython, которая объясняет все это.
По сути, вы заметили, что экземпляр python не взаимодействует с экземпляром диска. Вы должны сохранить новый файл или явно перезаписать старый.