我在使用Python方面非常新手,对C语言也很生疏,所以提前向大家道歉,如果我的问题听起来很愚蠢或者迷茫。
我有一个在C语言中创建包含数据的.dat文件的函数。我正在使用Python打开该文件进行读取。其中一项需要读取的内容是在C函数中创建并以二进制形式打印出来的结构体。在我的Python代码中,我已经定位到了文件中适当的行来读取结构体。我尝试过逐个解包结构体的项目,也尝试过整体解包,但都没有成功。结构体中的大部分项目在C代码中被声明为'real'类型。我与另外一个人共同开发这段代码,主要源代码是他的,并且他将变量声明为'real'类型。我需要将这部分代码放入一个循环中,因为我想读取目录中所有以'.dat'结尾的文件。为了开始循环,我已经写好了以下代码:
然后我阅读了包含结构体的那一行之前的所有行。然后我到达了那一行,并且有:
我只想读取结构体中存储的第一项内容。我在这里看到了一个示例,但是当我尝试时,出现了一个错误,错误信息如下:
我会接受任何人能给我的建议。我已经卡在这个问题上几天了,尝试了很多不同的方法。说实话,我觉得我对struct模块不太理解,但我已经尽可能多地阅读了相关资料。
谢谢!
我有一个在C语言中创建包含数据的.dat文件的函数。我正在使用Python打开该文件进行读取。其中一项需要读取的内容是在C函数中创建并以二进制形式打印出来的结构体。在我的Python代码中,我已经定位到了文件中适当的行来读取结构体。我尝试过逐个解包结构体的项目,也尝试过整体解包,但都没有成功。结构体中的大部分项目在C代码中被声明为'real'类型。我与另外一个人共同开发这段代码,主要源代码是他的,并且他将变量声明为'real'类型。我需要将这部分代码放入一个循环中,因为我想读取目录中所有以'.dat'结尾的文件。为了开始循环,我已经写好了以下代码:
for files in os.listdir(path):
if files.endswith(".dat"):
part = open(path + files, "rb")
for line in part:
然后我阅读了包含结构体的那一行之前的所有行。然后我到达了那一行,并且有:
part_struct = part.readline()
r = struct.unpack('<d8', part_struct[0])
我只想读取结构体中存储的第一项内容。我在这里看到了一个示例,但是当我尝试时,出现了一个错误,错误信息如下:
struct.error: repeat count given without format specifier
我会接受任何人能给我的建议。我已经卡在这个问题上几天了,尝试了很多不同的方法。说实话,我觉得我对struct模块不太理解,但我已经尽可能多地阅读了相关资料。
谢谢!