Python如何读取二进制文件中的4字节float并输出voxel浮点值列表
方法1:使用Python标准库struct(无需安装额外依赖)
struct是Python内置的二进制结构解析库,直接按格式解析字节流即可:
import struct with open(filename, 'rb') as f: byte_data = f.read() # 校验文件长度符合4字节float的对齐要求 if len(byte_data) %4 !=0: # 可根据需求选择截断非对齐的尾部字节,或者抛出异常 byte_data = byte_data[:len(byte_data)//4 *4] # 解析参数说明:格式符<f代表小端4字节单精度浮点数,若文件为大端存储则替换为>f voxel_values = struct.unpack(f'<{len(byte_data)//4}f', byte_data) # 遍历打印,按需输出避免IOPub数据超限,比如只打印前30个 for i, val in enumerate(voxel_values[:30]): print(f"第{i}个voxel值:{val}")
方法2:使用numpy(适合后续需要对voxel做数值计算、图像重构的场景)
numpy内置的二进制文件读取接口可以直接生成float数组,操作更简便:
import numpy as np # dtype参数:<f4对应小端4字节float32,大端则改为>f4 voxel_arr = np.fromfile(filename, dtype='<f4') # 转换为普通列表可选 voxel_list = voxel_arr.tolist() # 按需打印前N个元素避免IOPub报错 print(voxel_arr[:30])
注意事项
- 如果解析出的数值明显不符合预期(比如全为0、或者数值量级异常),优先切换字节序格式符测试
- 不要直接打印全量元素,按需切片输出即可避免IOPub数据速率超限的报错,无需修改jupyter的全局配置
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

