Hy,

My question is about reading Fortran binary file (oh no this question again...)

Until now, I was using the unpack module like that :

def lread(f,fourBeginning,fourEnd,*tuple):
    from struct import unpack
    """Reading a Fortran binary file in litte-endian"""
    if fourBeginning: f.seek(4,1)
    for array in tuple:
        for elt in xrange(array.size):
            transpose(array).flat[elt] = unpack(array.dtype.char,f.read(array.itemsize))[0]
    if fourEnd: f.seek(4,1)

After googling, I read that fopen and npfille was deprecated, and we should use numpy.fromfile and ndarray.tofile, but despite of the documentaion, the cookbook, the mailling list and google, I don't succed in making a simple example. Considering the simple Fortran code below what is the Python script to read the four arrrays? What about if my pc is little endian and the file big endian?

I think it will be a good idea to put the Fortran writting-arrays code and the Python reading-array script in the cookbook and maybe a page to help people comming from Fortran to start with Python ?

Best,

David Froger


program makeArray

implicit none

integer,parameter:: nx=10,ny=20
real(4),dimension(nx,ny):: ux,uy,p
integer :: i,j

open(11,file='uxuyp.bin',form='unformatted')

do i = 1,nx
do j = 1,ny
   ux(i,j) = real(i*j)
   uy(i,j) = real(i)/real(j)
   p (i,j)  = real(i) + real(j)
enddo
enddo

write(11) ux,uy
write(11) p

close(11)

end program makeArray