Skip to main content

csvdir

CI Docs PyPI Python License: MIT

Read every CSV in a directory as one stream of rows. No manual file loops, no header surprises — discovery, encoding, chunking, and optional pandas integration.

Documentation (primary): csvdir.readthedocs.io — getting started, guides, configuration, API reference, and changelog.

At a glance

Without csvdir With csvdir
Loop glob + open per file read_dir("/data") yields every row
Header drift breaks pipelines strict_headers / on_mismatch="skip"
Load huge dirs into memory chunksize= streams list[dict] batches
Awkward pandas glue code CsvDirFile works with pandas.read_csv

Includes: row and chunked iterators, .with_names() / .with_paths(), column helpers, recursive discovery, per-file encoding and quote sniffing. Dict iterators compare header names as sets; CsvDirFile (pandas) stitches using header sequence and sorted path order — see docs.

Requirements

Python 3.10+. No runtime dependencies (pandas optional for CsvDirFile).

Install

pip install csvdir

From a clone (contributors):

git clone https://github.com/eddiethedean/csvdir.git
cd csvdir
pip install -e ".[dev]"

Quick start

from csvdir import read_dir

for row in read_dir("/data/csvs"):
    print(row)
for stem, row in read_dir("/data/csvs").with_names():
    print(stem, row["name"])

More patterns (headers, chunks, columns, pandas) are in the guides on Read the Docs.

Documentation map

Start here Read the Docs
Install & mental model Getting started
Feature guides Guides overview
Every read_dir option Configuration
Autodoc API reference
Release history Changelog

Design files remain in docs/ in the repo; the site above is the supported reading path for releases.

Contributing

pip install -e ".[dev,docs]"
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest
ruff check csvdir tests && ruff format --check csvdir tests
mypy
python -m mkdocs build --strict

CI runs the same checks on Python 3.10–3.13. See Development on RTD.

License

MIT — LICENSE.

Metadata

Release files for csvdir 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for csvdir 0.9.0
File Size Uploaded
csvdir-0.9.0.tar.gz 21.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for csvdir 0.9.0
File Interpreter ABI Platform
csvdir-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 42.4 kB

Release files / csvdir-0.9.0.tar.gz

Download URL csvdir-0.9.0.tar.gz
Size 21.5 kB
Tags Source
SHA-256 checksum
How to use checksums
af1fa64f6737566c18b13759d1d125b85accc15b407f840a8398a2bed3780289
BLAKE2b-256 checksum
How to use checksums
cf84d39f16ac2ab80205bfe6032361c7b0b8e22182f83b14df00aed185bdebcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / csvdir-0.9.0-py3-none-any.whl

Download URL csvdir-0.9.0-py3-none-any.whl
Size 20.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a650f1faf5b835ffc5cd559b2d44718ccc80df27e81be62cb5fcdf56c2502aa
BLAKE2b-256 checksum
How to use checksums
ebd3accae36db53de0ee811b03ca1e266c5314068f4547eb1b0cf59a8aa5ed7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page