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

Error in using `struct.pack` for writing data to file

我有一个 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