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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csvdir-0.9.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csvdir-0.9.0-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file csvdir-0.9.0.tar.gz.

File metadata

  • Download URL: csvdir-0.9.0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for csvdir-0.9.0.tar.gz
Algorithm Hash digest
SHA256 af1fa64f6737566c18b13759d1d125b85accc15b407f840a8398a2bed3780289
MD5 058f55d95b0a68bf81f2bfaa886e19c3
BLAKE2b-256 cf84d39f16ac2ab80205bfe6032361c7b0b8e22182f83b14df00aed185bdebcf

See more details on using hashes here.

File details

Details for the file csvdir-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: csvdir-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for csvdir-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a650f1faf5b835ffc5cd559b2d44718ccc80df27e81be62cb5fcdf56c2502aa
MD5 6005a1e74add70a79692cf91f33bea95
BLAKE2b-256 ebd3accae36db53de0ee811b03ca1e266c5314068f4547eb1b0cf59a8aa5ed7c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.2

1 file

0.5.1

1 file

0.5.0

1 file

0.4.0

1 file

0.3.0

1 file

0.2.2

1 file

0.2.1

1 file

0.2.0

1 file

0.1.1

1 file

0.1.0

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page