你知道有哪个Python模块可以读取通用文件格式(UFF)吗?
这次谷歌没能帮上我。
这是我能找到的最接近的文档:http://go-ci.com/note/new/note_401.html。创建这个文档的人应该在http://sdrl.uc.edu/UFF2/58.asc有一些内容,但那个链接打不开,显示404错误。
UFF显然是一种科学软件使用的格式。这种格式并不常见,但一些老旧的手工制作程序需要用到它。
请注意,目前的问题不是我该如何处理这些老程序,或者那些负责这些程序的老程序员们 :-p
3 个回答
你可能想用这个在线的 uff(58) 查看器。
是的,有一个叫做pyuff的模块。
你可以在pypi上找到它,链接是: https://pypi.python.org/pypi/pyuff
或者在github上也可以找到它: https://github.com/openmodal/pyuff
如果你提到的是这些“通用文件格式”,比如“通用数据集58”和其他很多编号的数据集,我觉得目前没有现成的Python库可以直接读取它们。你可能需要自己写代码,具体要看你需要哪个“通用数据集”。
这会需要一些工作,但也不是特别麻烦:这些格式都有文档说明,主要是用Fortran IV语言写的(这也说明了这些格式大概有多老了……!),所以如果你了解Fortran的格式说明,就不难理解。例如,在UDV 58中,前几行的说明是
Record 1: Format(80A1)
这意味着“80个字节被解释为一个单一的[[ASCII]]文本字节字符串”;再往下几行,
Record 6: Format(2(I5,I10),2(1X,10A1,I10,I4))
意味着“两个5位整数后面跟着一个10位整数;然后是两个空格,一个10字节的ascii字符串,一个10位整数,一个4位整数”,接下来的文档解释了这十个字段的含义(空格1X没有解释;-) -- 函数类型,代码0表示一般或未知,1表示时间响应,2表示自谱,……一直到27表示阶次函数或28表示相位补偿;然后是函数识别号;等等。
Fortran IV的格式说明并不复杂,而且有很多文档可以参考,比如这里。另外,你也可以写一些简单的Fortran代码,按照文档中的格式顺序来处理,然后用f2py把它做成Python的扩展(或者也许可以用pyfortran,不过我觉得后者在保养上可能有点问题,因为Paul Dubois退休了)。
还有一种可能性:python-fortranformat是一个专门用于在Python中使用Fortran格式说明的工具。它还在不断完善中,但现在已经相对稳定了。可以通过easy_install -U fortranformat
来安装。