使用 python 读取二进制文件

Reading binary files using python

我有一些二进制文件,其中 header 我有兴趣阅读。这些二进制 Fortran 文件具有以下结构:

TYPE File_syn
    Sequence
    Character (Len=64) :: Site_ID                   !   64 bytes   64 
    Character (Len=4)  :: year                      !    4 bytes   68
    Character (Len=4)  :: mon                       !    4 bytes   72
    Real    :: lat                                  !    4 bytes   76
    Real    :: lon                                  !    4 bytes   80
    Real    :: elev                                 !    4 bytes   84
    Real    :: extras                               !    4 bytes   88
    Character (Len=32), Dimension(50) :: label      ! 1600 bytes 1688
    Character (Len=2408) :: padding                 ! 2408 bytes 4096
END TYPE File_syn

我有兴趣使用 Python 读取这些文件并整体获取变量 extra 和标签,最后一个将这些字节转换为数组字符。

我试过这样的事情:

 with open(file_path, 'rb') as f:
    Site_ID = f.read(64)
    year = f.read(4)
    month = f.read(4)
    lat = f.read(4)
    lon = f.read(4)
    elev = f.read(4)
    extras = f.read(4)
    label = f.read(1600)
    header_file = f.read(2408)

print(extras)
print(label)

对于 extras 我有这样的东西:

b'A0\x00\x00'

如何转换为字符?

提前致谢

您可以使用结构模块将二进制字符串转换为浮点数。

例如:

import struct
x = struct.unpack('f', b'A0\x00\x00')[0]

输出 1.7310239929804465e-41

这可能不是最优雅的解决方案,因为您必须将 'extras' 转换为字符串。

x = struct.unpack('f', str(extras))[0]