python-pyfwf is a fast, type-safe Python 3.9+ library for parsing, validating, and exporting Fixed Width Files (FWF).
It is part of the Fixed Width File Ecosystem and fully implements the fwf-compliance-tests v1.0.0 specification.
- Type-Safe Columns:
CharColumn,RightCharColumn,PositiveIntegerColumn,PositiveDecimalColumn,DateColumn,TimeColumn, andDateTimeColumn. - Flexible Descriptors: Structured records with
HeaderRowDescriptor,DetailRowDescriptor, andFooterRowDescriptor. - Multiple Output Renders: Export layout specifications to Markdown, ReStructuredText (RST), or HTML tables via
RenderUtils. - Full Test Suite & Compliance: 100% compliant with
fwf-compliance-testsv1.0.0. - Git Hooks Ready: Pre-configured
pre-commitandpre-pushhooks.
Install via pip:
pip install pyfwffrom pyfwf.columns import CharColumn, PositiveIntegerColumn
from pyfwf.descriptors import DetailRowDescriptor, FileDescriptor
from pyfwf.readers import Reader
# 1. Define columns
name_col = CharColumn('name', 20, 'User Name')
age_col = PositiveIntegerColumn('age', 3, 'Age in years')
# 2. Define row and file descriptors
detail = DetailRowDescriptor([name_col, age_col])
file_descriptor = FileDescriptor([detail])
# 3. Read fixed-width file content
content = "KELSON MEDEIROS 045\nMARIA SILVA 030\n"
reader = Reader(content, file_descriptor, "\n")
for row in reader:
print(f"Name: {row['name']} | Age: {row['age']}")Run all unit tests using pytest:
pytestSet up pre-commit and pre-push hooks:
pre-commit install
pre-commit install --hook-type pre-pushRun checks manually:
pre-commit run --all-filesThis project is licensed under the MIT License - see the LICENSE file for details.