写作UINT16 Raw文件
我试着写下面的代码原始文件:再次与写作UINT16 Raw文件
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
被写入。
的.tofile()
方法的默认行为是写一个二进制文件,所以你必须打开,你会以二进制方式写入文件:
OutputFile = open(OutputFilePath, 'wb')
同样用于读取文件:
OutputFile = open(OutputFilePath, 'rb')
这在Windows中至关重要,因为Python会对文本(即非二进制)文件进行自动转换。
我确实看到问题是行结束不明白他们为什么在那里,但它似乎工作非常感谢你。奇怪的是,这种行为并不适用于np.memmep。你知道为什么吗? –
@ J.Goedhart:它不适用于'np.memmap()',因为它不调用'file.write()'。 –
哪个版本的Python?哪个OS? –
python 2.7在多个窗口10和7可能8 –