我正在从 matlab 翻译一个脚本,该脚本读取二进制编码的 32 位整数文件并适当地解析它们。我编写了以下方法,旨在模仿 matlab 的 fread() 函数:
def readi(f,n):
x = zeros(n,int);
for i in range(0,n):
x[i] = struct.unpack('i',f.read(4))[0];
print x[i];
return x;
当我解析数据时,我在脚本中使用介于 1 和 9 之间的 n 来不同地调用此函数。我的问题是,在我收到此错误之前,脚本只进入了文件的一部分:
x[i] = struct.unpack('i',f.read(4))[0];
struct.error: unpack requires a string argument of length 4
看来python认为我已经到了文件的末尾。错误发生的执行点是循环中已经被迭代多次的行。此外,已解析的文件的一小部分已经与我的 matlab 脚本从完全相同的文件(不是副本)生成的完全匹配。然而,Matlab 能够从文件中读取更大的数据集。有没有人知道为什么会发生这个错误?