如何在Python中将浮点数列表输出到二进制文件

37 投票
8 回答
65439 浏览
提问于 2025-04-15 11:20

我在Python里有一串浮点数:

floats = [3.14, 2.7, 0.0, -1.0, 1.1]

我想把这些数写入一个二进制文件,使用IEEE 32位编码。请问在Python中怎么做比较好呢?我的列表大约有200MB的数据,所以最好是速度不要太慢。

因为我只有5个数,所以我只想要一个20字节的文件作为输出。

8 个回答

14

标准库中的数组模块可能比大家推荐的结构模块更适合这个任务。处理200MB的数据时,使用数组的性能应该会好很多。

如果你想看看不同的选择,可以试着在你的系统上使用类似这样的工具进行性能测试

25

查看:Python的struct模块

import struct
s = struct.pack('f'*len(floats), *floats)
f = open('file','wb')
f.write(s)
f.close()
50

亚历克斯说得没错,这样做效率更高:

from array import array
output_file = open('file', 'wb')
float_array = array('d', [3.14, 2.7, 0.0, -1.0, 1.1])
float_array.tofile(output_file)
output_file.close()

然后可以这样读取数组:

input_file = open('file', 'rb')
float_array = array('d')
float_array.fromstring(input_file.read())

array.array 对象还有一个 .fromfile 方法,可以用来读取文件,如果你事先知道里面有多少个项目(比如通过文件大小,或者其他方法)

撰写回答