如何读取和写入二进制文件?

2024-04-28 05:56:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在接下来的几天里,我无法使用电脑,但我无法忘记这个问题。我只是在玩压缩算法,创建了一个自己的音频和我困在输出到文件的步骤。所以这里是我的问题,希望我能在回来之前找到答案,否则这会吞噬我的心灵。

1)如果我有一个带整数的numpy X数组(比如int16),如果我打开一个文件对象并执行file.write(X),文件输出会是什么样的?数字?还是数字的ASCII码?还是二进制的?

2)根据上述答案,如何将此文件读入numpy数组X?

基本上我的压缩是做一些小波和fft变换,在这里和那里做一些滤波,然后返回一个带一些数字的数组,我知道这个数组的格式,我已经在这里实现了很高的压缩率,下一步是首先将这个数组转储到一个二进制文件中。一旦我实现了这个目标,我的下一个目标就是实现某种文件/向量的熵编码。

欢迎任何意见。


Tags: 文件对象答案numpy目标二进制步骤数字
1条回答
网友
1楼 · 发布于 2024-04-28 05:56:14

1)写作:

In [1]: f = open('ints','wb')
In [2]: x = numpy.int16(array([1,2,3]))
Out[2]: array([1, 2, 3], dtype=int16)
In [3]: f.write(x)
In [4]: f.close()

2)读数:

In [5]: f = open('ints','wb')
In [6]: x = f.read()
In [7]: x
Out[7]: '\x01\x00\x02\x00\x03\x00'
In [8]: numpy.fromstring(x, dtype=np.uint16, count=3)
Out[8]: array([1, 2, 3], dtype=uint16)

更新:

正如J.F.Sebastian所建议的,有更好的方法可以做到这一点,比如使用:

或者正如Janne Karila建议的那样:

相关问题 更多 >