I have found a way to solve my own problem: read the file as an array
import pyfits
from scipy.io import *
M=read_array(filename)
Devote each column to a header name
c1=pyfits.Column(name='ID', format='E', array=M[:,0])
c2=pyfits.Column(name='RA', format='E', array=M[:,1])
c3=pyfits.Column(name='DEC', format='E', array=M[:,2])
c4=pyfits.Column(name='X', format='E', array=M[:,3])
c5=pyfits.Column(name='Y', format='E', array=M[:,4])
c6=pyfits.Column(name='Umag', format='E', array=M[:,5])
c7=pyfits.Column(name='Bmag', format='E', array=M[:,6])
c8=pyfits.Column(name='Vmag', format='E', array=M[:,7])
c9=pyfits.Column(name='Rmag', format='E', array=M[:,8])
c10=pyfits.Column(name='Imag', format='E', array=M[:,9])
cols = pyfits.ColDefs([c1, c2, c3, c4, c5, c6, c7, c8, c9, c10])
Write the header and columns as a fits file:
tbhdu = pyfits.new_table(cols)
hdu = pyfits.PrimaryHDU(data=M)
thdulist = pyfits.HDUList([hdu,tbhdu])
thdulist.writeto(outfilename)
thdulist.close()
It worked!!