我试图用Python读取一个二进制文件。这是我使用的代码:
fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)但是,我在数组的末尾得到零值。例如,对于nrows=296和ncol=439以及结果是len(a)=296*439的情况,我得到了a[-922:]的零值。我知道这些值应该是noData (在本例中是-9999),它来自R中一段可信任的代码,有人知道我为什么要得到这些无意义的零吗?
P.S:我不确定它是否有关联,但len(a)是nrows*ncols+2!我必须使用a = a[0:-2]消除这两种情况,这样当我使用a_reshape = a.reshape(nrows, ncols)将它们重新组合为行和列时,就不会出现错误。
发布于 2014-07-28 21:15:59
当打开文件以二进制方式读取时,您应该使用模式"rb"而不是"r"。
以下是文档的一些背景信息。在linux机器上,您不需要"b",但不会有任何伤害。在Windows机器上,必须对二进制文件使用"rb"。
还请注意,在使用Fortran的“未格式化”二进制输出格式时,您得到的两个额外条目是一个常见的bug/特性。在这种模式下给出的每个写语句都将生成一个记录,该记录被两个4字节块包围。
这些块表示列出未格式化数据块中字节数的整数。例如223 223。
https://stackoverflow.com/questions/25004225
复制相似问题