I am using Python 2.7.10 And pyfits 3.3. Earlier, I have used the following code to merge two tables. However, now I am getting some errors
t1 = pyfits.open(table1)[1].columns
t2 = pyfits.open(table2)[1].columns
new_columns = t1 + t2
hdu = pyfits.BinTableHDU.from_columns(new_columns)
hdu.writeto(outtable)
The error is:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/vvikraman/anaconda2/lib/python2.7/site-packages/pyfits/hdu/table.py", line 116, in from_columns
data = FITS_rec.from_columns(coldefs, nrows=nrows, fill=fill)
File "/home/vvikraman/anaconda2/lib/python2.7/site-packages/pyfits/fitsrec.py", line 315, in from_columns
if arr.hdu.data is None:
ReferenceError: weakly-referenced object no longer exists
Is there a reason you cannot use astropy
(i.e. astropy.io.fits
)?
In that case the idiom would be:
from astropy.table import Table, hstack
t1 = Table.read(table1)
t2 = Table.read(table2)
new = hstack([t1, t2])
new.write(outtable)
In both the read
and write
calls, you need to provide format='fits'
if the table name extension(s) do not imply that it is FITS.