python code to fortran 77's

Larry larry.cebuala at gmail.com
Wed Mar 11 05:18:11 EDT 2009


On Mar 9, 9:55 am, John Machin <sjmac... at lexicon.net> wrote:
> On Mar 9, 12:09 pm, Larry <larry.cebu... at gmail.com> wrote:
>
>
>
> > Friends,
>
> > I need to read a binary file using a Fortran 77 code to integrate with
> > a legacy code.... It looked very much complicated to me for I have no
> > knowledge in Fortran.
>
> > I could read the file with ease using Python, as shown in the
> > following.
>
> > ###################
> > from numpy import*              #Importing modules
> > from struct import unpack
>
> > f = open('bindata', 'rb')               #Opening binary file for reading
> > A = zeros(20)                   #Initializing "empty" array
>
> > for i in xrange(20):
> >         data = unpack('f', f.read(4))           # Unpacking 32-bit data, C-float
> >         A[i]+=data
>
> > ============
> > Sample output:
>
> > >>> A
>
> > array([ 239.,  309.,  298.,  280.,  286.,  250.,  190.,  200.,  226.,
> >         .
> >         .
> >         .
> >                214.,  243.,  439.,  565.,  564.,  546.,  142.,   87.,
> > 118.])
>
> > ######################
>
> > As you can see, data values are 4-byte long (float) and byte order is
> > little endian (Intel machine).
>
> > I intend to post this to a fortran users group but if you know, kindly
> > give a piece of advice.
>
> > Thanks to all those who will help.
>
> Have you tried google("f77 read binary")?
>
> Not much help with your f77 problem, but you might like to see a  less
> verbose way of doing it in Python:
>
> from struct import unpack
> f = open('bindata', 'rb')
> a_tuple = unpack('<20f', f.read(80))
>
> Cheers,
> John


Thanks. Gonna try....



More information about the Python-list mailing list