python-使用`struct.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字节.

Any ideas why the file size is not exactly 4000 bytes?

解决方法:

以二进制模式打开文件:

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

否则,文件对象可能会对二进制数据中显示的换行符进行魔术转换,从而导致其他字符被写入文件.参见例如https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

上一篇:Elasticsearch开启X-PACK后客户端的配置方式


下一篇:彻底删除git中的文件(包括历史提交记录)