使用`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字节。
有什么想法为什么文件大小不完全是4000字节?
问题答案:
以二进制模式打开文件:
outputFile = open('testDS', 'wb')
否则,文件对象可能会对二进制数据中显示的换行符进行魔术转换,从而导致其他字符被写入文件。参见例如https://docs.python.org/2/tutorial/inputoutput.html#reading-
and-writing-
files