使用python读取fortran未格式化的文件

发布于 2021-01-29 15:02:52

我有一个fortran程序会生成未格式化的文件,并且正在尝试将它们读入Python。

我有源代码,因此我知道第一个“块”是的字符数组,character*1 name(80)依此类推。所以我开始

f = open(filename,'rb')
bytes = 80
name = struct.unpack('c'*bytes,f.read(bytes))

并且name是一个80长度的元组,由长度为1的字符串组成;其中一些内容是十六进制字符串(例如\x00)。如何将这个变量转换为单个ascii字符串?

关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    大多数Fortran未格式化文件将包含额外的字节来指定记录的长度。记录是用单个Fortran写语句写的一组项目。每个记录的开始和结束通常为4个字节。因此,使用另一种语言,您将要读取这些“隐藏”值并跳过它们。在这种情况下,如果您尝试将它们解释为字符串的一部分,则会在字符串中添加错误的值,该值可能具有ASCII的特殊值。

    Fortran字符串将是固定长度,并在末尾用空格填充,ASCII中的空格为0x20。除非未初始化字符串或Fortran程序员使用字符串保存二进制数据,否则我不会期望值0x00。

    在这个时代,如果Fortran程序员正在编写要与另一种语言一起使用的未格式化/二进制文件,则可以通过使用Fortran 2003的“流”
    IO方法来忽略这些多余的字节。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看