将原始浮点数据文件读入列表

时间:2018-02-14 14:13:57

标签: python

我有一个文件,其中包含32位浮点数组的原始数据。我想读取这些数据并将其类似于浮点数并将它们存储在列表中。

enter image description here

如何使用python执行此操作?

注意:数据源自可能使用与桌面不同的字节序的嵌入式设备。

2 个答案:

答案 0 :(得分:1)

标准struct模块适用于处理这样的压缩二进制数据。这是一个简单的例子:

dataFromFile = "\x67\x66\x1e\x41\x01\x00\x30\x41"   # an excerpt from your data

import struct
numFloats = len(dataFromFile) // 4

# Try decoding it as little-endian
print(struct.unpack("<" + "f" * numFloats, dataFromFile))
# Output is (9.90000057220459, 11.000000953674316)

# Try decoding it as big-endian
print(struct.unpack(">" + "f" * numFloats, dataFromFile))
# Output is (1.0867023771258422e+24, 2.354450749630536e-38)

在这种情况下,小端解释看起来更有意义(9.9和11,通常的浮点不准确),所以我猜这是实际的格式。

答案 1 :(得分:0)

你可以读取文件,将其存储在字符串中,然后解析字符串并转换为float:

with open(“testfile.txt”) as file:  
    data = file.read() 
    values = data.split(" ")
    floatValues = [float(x) for x in values]

或者你可以使用numpy模块或csv读取文件模块中的一些解析器