写uint16原始文件

时间:2017-04-04 15:33:04

标签: python arrays numpy writetofile

我尝试使用以下代码编写原始文件:

OutputFile = open(OutputFilePath,'w')
BlockArray= np.array(A).astype(np.uint16)
BlockArray.tofile(OutputFile)
OutputFile.close()

然后我尝试再次阅读:

OutputFile = open(OutputFilePath,'r+')
print np.fromfile(OutputFile,dtype=np.uint16)

问题是文件大小正确,但第一个8192数字是好的,但数字反转或完全错误。数组的形状为(300,1312,98)。我不知道这里发生了什么。所以任何人都可以向我解释这种情况以及如何编写正确的原始文件吗?

反转我的意思是十六进制数应该是例如A5 01 = 421但是在原始文件编号01 A5 = 42241中写入。

1 个答案:

答案 0 :(得分:2)

OutputFile = open(OutputFilePath, 'wb') 方法的默认行为是编写二进制文件,因此您必须以二进制模式打开要写入的文件:

OutputFile = open(OutputFilePath, 'rb')

同样阅读文件:

{{1}}

这在Windows中至关重要,因为Python会使用文本(即非二进制)文件自动转换行结尾。