用Python读取Delphi二进制文件

Bre*_*dan 6 python delphi file-io

我有一个用以下Delphi声明编写的文件...


Type
  Tfulldata = Record
    dpoints, dloops : integer;
    dtime, bT, sT, hI, LI : real;
    tm : real;
    data : array[1..armax] Of Real;
  End;

...
Var:
  fh: File Of Tfulldata;
Run Code Online (Sandbox Code Playgroud)

如果可能,我想使用Python分析文件中的数据(大小为MB) - 是否有一种简单的方法来读取数据并将数据转换为类似于Delphi记录的Python对象?有没有人知道图书馆可能这样做?

这是在Delphi 7上编译的,其中包含以下可能(或可能不)相关的选项,

  • 记录字段对齐:8
  • 奔腾安全FDIV:错误
  • 堆栈框架:错误
  • 优化:真的

Bre*_*dan 5

以下是KillianDS和Ritsaert Hornstra的完整解决方案

import struct
fh = open('my_file.dat', 'rb')
s = fh.read(40256)
vals = struct.unpack('iidddddd5025d', s)
dpoints, dloops, dtime, bT, sT, hI, LI, tm = vals[:8]
data = vals[8:]
Run Code Online (Sandbox Code Playgroud)