Я пытаюсь использовать np.fromfile
для чтения двоичного файла, который я написал с помощью Fortran, используя прямой доступ. Однако, если я установлю count=-1
вместо max_items
, np.fromfile
вернет массив большего размера, чем ожидалось; добавление нулей к вектору, который я написал в двоичном формате.
Тестовый код Фортрана:
program testing
implicit none
integer*4::i
open(1,access='DIRECT', recl=20, file='mytest', form='unformatted',convert='big_endian')
write(1,rec=1) (i,i=1,20)
close(1)
end program
Как я использую np.fromfile
:
import numpy as np
f=open('mytest','rb')
f.seek(0)
x=np.fromfile(f,'>i4',count=20)
print len(x),x
поэтому, если я использую его таким образом, он возвращает именно мой массив [1,...,20]
np
, но установка count=-1
возвращает [1,...,20,0,0,0,0,0]
с размером 1600.
Я использую машину с прямым порядком байтов (ни на что не должна влиять) и компилирую код Fortran с помощью ifort.
Мне просто любопытно, почему это происходит, чтобы избежать каких-либо сюрпризов в будущем.