当前位置: 代码迷 >> python >> 使用 `struct.pack` 将数据写入文件时出错
  详细解决方案

使用 `struct.pack` 将数据写入文件时出错

热度:59   发布时间:2023-06-16 14:01:02.0

我有一个numpy.ndarray数字样本,每个数字都在 1 和2**20

我想把它写成一个二进制文件,这样每个元素都用四个字节表示。

但是,生成的文件大小与样本大小的 4 倍不同。

这是我正在使用的代码:

        outputFile = open('testDS', 'w')
        print len(sample)
        if (outputFile is not None):
            for s in sample:
                assert(s < 2**20)
                r = struct.pack("i", s)
                assert(len(r) == 4)
                outputFile.write(r)
        outputFile.close()

我得到的输出(样本的大小)是:1000

但是,生成的文件大小为 4026 字节。

任何想法为什么文件大小不完全是 4000 字节?

以二进制方式打开文件:

outputFile = open('testDS', 'wb')

否则,文件对象可能会对二进制数据中显示的换行符进行一些神奇的转换,从而导致将额外的字符写入文件。 例如,参见

  相关解决方案