Изменить значение ключевого слова в заголовке файла 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 не взаимодействует с экземпляром диска. Вы должны сохранить новый файл или явно перезаписать старый.

Другие вопросы по тегам