/fortio

A Python IO for Fortran Unformatted Binary File with Variable-Length Records.

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

Fortio

A Python IO for Fortran Unformatted Binary Files with Variable-Length Records.

Features

  • read and write Fortran unformatted file
  • auto-detect endianness(byteorder)
  • allow reading data into pre-allocated buffers
  • allow skipping over records or jumping to wanted record directly without reading data
  • support subrecords (which is necessary for long record whose size larger than 4GB with signed 4 bytes integer header)
  • support numpy.memmap array for fast loading

Installation

pip install fortio

Usage

from fortio import FortranFile
with FortranFile(filename) as f:
    a = f.read_record('i4')
    f.skip_record()
    b = f.read_record('f8')

Read file that contains subrecords (e.g., records greater than 4GB) by setting signed header,

with FortranFile(filename, header_dtype='int32') as f:
    ...

Please read the docstring of FortranFile for detailed documentation.

Functions

  • FortranFile(filename, mode='r', header_dtype='uint32', auto_endian=True, check_file=True)

  • methods

    • write_record(data)
    • read_record(dtype='byte', shape=None, rec=None, memmap=False)
    • mmap_record(dtype='byte', shape=None, rec=None)
    • read_record_into(into, offset=None, rec=None)
    • get_record_size(rec=None)
    • skip_record(nrec=1)
    • goto_record(rec=None)
    • close()
    • flush()
  • properties

    • file
    • filesize
    • mode
    • header_dtype
    • long_records
    • closed
    • byteorder
  • internal properties and methods

    • _fp
    • _offsets
    • _lengths
    • _read_header()
    • _check_byteorder()
    • _check_file()
    • _read_record_data(data)