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

时间:2015-10-25 18:20:26

标签: python file output pack

我有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字节的任何想法?

1 个答案:

答案 0 :(得分:3)

以二进制模式打开文件:

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

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