[Numpy-discussion] example reading binary Fortran file
Pradeep Jha
pradeep.kumar.jha at gmail.com
Wed Feb 13 03:49:36 EST 2013
Pradeep Jha <pradeep.kumar.jha <at> gmail.com> writes:
>
>
>
> Hello,
>
> I am trying to read a fortran unformatted binary file with
> FortranFile as follows but I get an error.
> -----------------------------------------
> >>> from FortranFile import FortranFile
> >>> f = FortranFile("vor_465.float",endian="<")
> >>> u = f.readReals()
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "FortranFile.py", line 193, in readReals
> data_str = self.readRecord()
> File "FortranFile.py", line 140, in readRecord
> data_str = self._read_exactly(l)
> File "FortranFile.py", line 124, in _read_exactly
> ' Wanted %d bytes, got %d.' % (num_bytes, l))
> IOError: Could not read enough data.
> Wanted 1124054321 bytes, got 536870908.
> ------------------------------------------
>
> My file, "vor_465.float" has the following size:
> ------------------------------------------
> [pradeep <at> laptop ~]$ls -l vor_465.float
> -rwxr-xr-x 1 pradeep staff 536870912 Feb 13 ***
> -----------------------------------------
>
> I am sure this file has data in the right format as
> when I read it using fortran using the following command:
>
> --------------------------------------------------
> open (in_file_id,FILE="vor_465.float",form='unformatted',
> access='direct',recl=4*512*512*512)
> read (in_file_id,rec=1) buffer
> --------------------------------------------------
>
> it works completely fine. This data contains single precision float
> values for a scalar over a cube with 512 points in each direction.
>
> Any ideas?
> Pradeep
>
Also, when I am trying to write an unformatted binary file with
FortranFile I am getting the following error:
---------------------------------------------------
[pradeep at laptop ~]$python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from FortranFile import FortranFile
>>> f = FortranFile("filename", endian="<")
>>> array = [1,2,3,4,5,6,6,7]
>>> f.writeReals(array)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "FortranFile.py", line 214, in writeReals
self._write_check(length_bytes)
File "FortranFile.py", line 135, in _write_check
number_of_bytes))
IOError: File not open for writing
------------------------------------------------
I dont know how to make the file available for writing. I
checked the file permissions and they are completely fine.
Please help,
Pradeep
More information about the NumPy-Discussion
mailing list