2016-03-28 61 views
4

我想创建一个ascii表的一些信息的标题,名称和单位的列和一些数据,它应该看起来像这样的:如何保存一个astropy表的标题和单位到一个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.writhe,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,在这种情况下,问题是包括头部中的第4行,如:'| null |空| ......”,我不知道如何摆脱它......

感谢您的帮助

的Un saludo。

+0

我对你的例子有点困惑。你的例子中的'data'是什么类型的对象?如果它是一张Astropy Table,你的“单位”是如何被存储的,因为它们不是由任何意义上的宇宙识别的单位 - 只是一些任意的字符串(来自它的POV)。当你在你的例子中调用'ascii.write()'时,你也不会对“单位”做任何事情。 我不知道是否有必要,但您也可以按照此处所述定义自定义读者/作者:http://docs.astropy.org/en/stable/io/ascii/read.html#advanced-customization – Iguananaut

回答

4

使用astropy.tableastropy.io.ascii似乎没有一种直接的方式来以通用的方式写出列的单位。您可能想通过功能请求在https://github.com/astropy/astropy/issues处提出问题。

但是,使用格式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格式,然后取出2和第4行。

+0

是的,这就是我正在考虑...扭曲文件,然后悔改并编辑它...也应该以某种方式与其他格式,如'fixed_width' 我会提出问题 谢谢 – Emberck

1

除非您的表格绝对具有该格式,否则如果您想要一个具有更复杂元数据的ASCII表格,请考虑使用ECSV格式。

+0

我试过' ECSV'格式,并不适合我的需求,最后我想我会在'|'使用'IPAC'。 '作为分隔符...这就足够接近,也容易被人们阅读,Python,IDL和VO ... 无论如何谢谢你的答案 – Emberck

相关问题