[Numpy-discussion] Another question on reading from binary FORTRAN file
Michael Gilbert
michael.s.gilbert at gmail.com
Mon Mar 9 23:41:12 EDT 2009
On Mon, 9 Mar 2009 18:21:45 -0400 "Michael S. Gilbert" wrote:
> On Mon, 9 Mar 2009 21:45:42 +0100, Mark Bakker wrote:
>
> > Hello -
> >
> > I tried to figure this out from the list, but haven't succeeded yet.
> >
> > I have a simple FORTRAN binary file.
> > It contains:
> > 1 integer
> > 1 float
> > 1 array with 16 numbers (float)
> >
> > How do I read these into Python?
>
> I figured this out a long time (4 years) ago, but haven't thought about
> it for a while, so I don't really have the answer, but I can provide
> a little guidance. Fortran pads its output, so you just have to
> figure out how the padding works and how to get around it to get the
> information that you actually need.
>
> I suggest writing out some examples via fortran and using hexdump to
> view the results, then you can determine the pattern. For example,
> you would get something like:
>
> $ hexdump -C fort.out
> 0000008 0000000F 00000008
>
> when you use fortran to write 15 as an integer. Then you can use
> python's binary file i/o to read in the file and extract the
> information that you are interested in. Hope this helps.
>
> Regards,
> Mike
I probably should have mentioned fromfile, which you can actually use
to read the binary data:
fid = open( 'fort.out' , 'r' )
junk = numpy.fromfile( fid , numpy.int , 1 )
integer = numpy.fromfile( fid, numpy.int , 1 )
junk = numpy.fromfile( fid , numpy.int , 2 )
floats = numpy.fromfile( fid , numpy.float , 16 )
.
.
.
fid.close()
Regards,
Mike
More information about the NumPy-Discussion
mailing list