Nils Wagner wrote: > On Mon, 2 Feb 2009 13:39:32 +0100 > Matthieu Brucher <matthieu.bruc...@gmail.com> wrote: >> Hi, >> >> There was a discussion about this last week. You can find it int he >> archives ;) >> >> Matthieu > > Hi Matthieu, > > Sorry but I missed that. > Anyway I have some trouble with my short example. > > g77 -c binary_fortran.f > g77 -o io binary_fortran.o > ./io > > 11 254 254. > 12 253 126. > 13 252 84. > 14 251 62. > 15 250 50. > 16 249 41. > 17 248 35. > 18 247 30. > 19 246 27. > 20 245 24. > > python -i read_fortran.py > >>>> a > array([(16, 1090921693195, 254.0), (16, 16, 5.3686493512014268e-312), > (4638566878703255552, 16, 7.9050503334599447e-323), > (1082331758605, 4635611391447793664, 7.9050503334599447e-323), > (16, 1078036791310, 62.0), (16, 16, 5.3049894774872906e-312), > (4632233691727265792, 16, 7.9050503334599447e-323), > (1069446856720, 4630967054332067840, 7.9050503334599447e-323), > (16, 1065151889425, 35.0), (16, 16, 5.2413296037731544e-312), > (4629137466983448576, 16, 7.9050503334599447e-323), > (1056561954835, 4628293042053316608, 7.9050503334599447e-323), > (16, 1052266987540, 24.0)], > dtype=[('irow', '<i8'), ('icol', '<i8'), ('value', '<f8')]) > > How can I fix the problem ? >
Every write statement in fortran first writes out the number of bytes that will follow, *then* the actual data. So, for instance, the first write to file in your program will write the bytes corresponding to these values: 16 X(1) Y(1) Z(1) The 16 comes from the size of 2 ints and 1 double. Since you're always writing out the 3 values, and they're always the same size, try adding another integer column as the first field in your array. Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion