【问题标题】:Error in using `struct.pack` for writing data to file使用“struct.pack”将数据写入文件时出错
【发布时间】:2015-10-25 18:20:25
【问题描述】:

我有一个 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 字节吗?

【问题讨论】:

    标签: python file output pack


    【解决方案1】:

    以二进制模式打开文件:

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

    否则,文件对象可能会对出现在二进制数据中的换行符进行一些神奇的转换,从而导致将其他字符写入文件。例如,请参阅https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      相关资源
      最近更新 更多