Python 如何将astropy表格的标题和单位保存到ascii文件中

Python 如何将astropy表格的标题和单位保存到ascii文件中,python,numpy,save,ascii,astropy,Python,Numpy,Save,Ascii,Astropy,我正在尝试创建一个ascii表,其中包含一些关于标题、列的名称和单位以及一些数据的信息,它应该如下所示: # ... Header Info ... Name | Morphology | ra_u | dec_u | ... | InNS+B+MOI | HH:MM:SS.SSS | ±DD:MM:SS:SSS| ... ==============| ========== | ============ | =

我正在尝试创建一个ascii表,其中包含一些关于标题、列的名称和单位以及一些数据的信息,它应该如下所示:

 # ... Header Info ...
          Name | Morphology |         ra_u |        dec_u | ...
               | InNS+B+MOI | HH:MM:SS.SSS | ±DD:MM:SS:SSS| ...
 ==============| ========== | ============ | ============ | ...
 1_Cam_A       | I          | 04:32:01.845 | +53:54:39.03   ...
 10_Lac        | I          | 22:39:15.679 | +39:03:01.01   ... 
...
到目前为止,我已经尝试使用numpy.savetxt和astropy.ascii.write。numpy并不能真正解决我的问题,而使用ascii.write,我可以得到类似的结果,但并不完全正确:

              Name | Morphology |         ra_u |        dec_u | ...    
================== | ========== | ============ | ============ | ...
1_Cam_A            | I          | 04:32:01.845 | +53:54:39.03   ...
...
我正在使用以下代码:

formato= {'Name':'%-23s','Morphology':'%-10s','ra_u':'%s','dec_u':'%s',...}
names=['Name','Morphology','ra_u','dec_u','Mag6']
units=['','InNS+B+MOI','HH:MM:SS.SSS','±DD:MM:SS:SSS',...]
ascii.write(data, output='pb.txt',format='fixed_width_two_line',position_char='=',delimiter=' | ',names=names, formats=formato)
因此,如果我在终端中打印,除了标题信息外,表格看起来应该是一样的,但当我将其保存到文件中时,单位消失了

有没有办法将它们包含在文件中?或者我需要保存文件并在以后进行编辑

p.D.:我还尝试了一些其他格式,例如用于ascii.write的IPAC,在这种情况下,问题是在标题中包含第四行,如:“|null | null |……”,我不知道如何摆脱它

谢谢你的帮助


Un saludo.

使用
astropy.table
astropy.io.ascii
以通用方式写出列的单位似乎不是一种简单的方法。您可能希望在提出功能请求时提出问题

但是,使用ascii.ipac格式有一个非常简单的解决方法:

tbl.write('test.txt', format='ascii.ipac')
with open('test.txt', 'r') as fh:
    output = []
    for ii, line in enumerate(fh):
        if ii not in (1,3):
            output.append(line)

with open('test.txt', 'w') as fh:
    fh.writelines(output)

将以IPAC格式编写,然后删除第二行和第四行。

< P>除非表绝对必须是该格式,如果您想要具有更复杂元数据的ASCII表,请考虑使用格式。

YEP,这正是我所想的…写入文件,然后后悔并编辑它。。。也应该以某种方式与其他格式一起工作,如“固定宽度”,我将提出这个问题,谢谢。我对您的示例有点困惑。在您的示例中,
数据
是什么类型的对象?如果它是一个Astropy表,你的“单位”是如何存储的,因为它们不是Astropy所能识别的任何意义上的单位——只是一些任意的字符串(来自它的POV)。在您的示例中,当您调用
ascii.write()
时,您也不会对“单位”执行任何操作。我不知道是否有必要,但您也可以按此处所述定义自定义读/写器:我尝试了
ECSV
格式,但并不适合我的需要,最后我想我将使用
IPAC
和“|”作为分隔符。。。这已经足够接近了,也很容易被人阅读,Python,IDL和VO。。。无论如何,谢谢你的回答