2016-04-06 12 views
-1

Ich habe dieses Skript, das eine Datei mit mehreren Erweiterungen erstellt, aber ich möchte Header aus den alten Dateien zu den Erweiterungen hinzufügen.Kopfzeile in neue Datei-Astropie kopieren

new_hdul = fits.HDUList() 
new_hdul.append(fits.PrimaryHDU(header=headermain)) 
new_hdul.append(fits.ImageHDU(nod1, header=header1, name='Chop1')) 
new_hdul.append(fits.ImageHDU(nod2, header=header2, name='Chop2')) 
new_hdul.append(fits.ImageHDU(diff1, name='Dif')) 

Jetzt habe ich versucht:

headermain = fits.getheader(file,0) 

und

headermain = fits.open(file).header.copy() 

Aber beide geben Sie mir Fehler zu sagen, dass

ValueError: header must be a Header object

Wie kann ich dieses Problem beheben?

headermain = fits.getheader(file,0) 
print(headermain) 

siehe http://pastebin.com/JXki7EPV

Antwort

1

Allgemeinen den Header als Header-Objekt aus einer Datei bekommen ist nicht kompliziert. Sie astropy.io.fits.open() die Datei und extrahieren Sie die Kopfzeile aus dem PrimaryHDU mit:

from astropy.io import fits 

filename = 'test.fits' 

with fits.open(filename) as hdus: 
    headermain = hdus[0].header 

oder mit getheader:

headermain = fits.getheader(filename) # Defaults to primary header! 

und das Ergebnis wird ein fits.Header -Objekt, die Sie beim Schreiben verwenden können.

Wenn Ihre Datei jedoch keine gültige FITS-Datei ist, können Probleme auftreten. Wenn dies nicht funktioniert, können Sie Ihre Frage bearbeiten und die Ausgabe einer dieser beiden Funktionen anzeigen?

print(headermain) 
+0

Ich habe beide Methoden ausprobiert und beide geben den gleichen Fehler. Ich habe die Ausgabe des Headermains eingefügt. – Coolcrab

+0

Nevermind, habe das Problem gefunden! – Coolcrab

+0

@Coolcrab - Wenn Sie den Fehler selbst gefunden haben, können Sie Ihre eigene Frage beantworten. :) – MSeifert