我有一个用Fortran创建的二进制文件,其中包含整数值作为记录。我想将它们读入Python,编辑为列表,并将它们保存回二进制,作为np数组。然而,出于某种原因,Python在文件中的每个记录后面插入了一个额外的“0”。我猜这就是他们所谓的“填充”,对吧?如何抑制这种情况?
下面是一个独立的例子:
import numpy as np
content = np.array(range(20))
# Write:
with open('D:/bin_test.dat', 'wb') as write_binary:
write_binary.writelines(content)
# Read:
with open('D:/bin_test.dat', 'rb') as read_binary:
content = np.fromfile(read_binary, dtype=np.int16)
print content
Out:
[ 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11
0 12 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0]
如果我通过读取Fortran二进制文件
np.fromfile
然后直接将其保存回二进制,效果很好。这就是为什么我猜问题发生在从列表到numpy数组的转换之后。
谢谢