Skip to main content

A snappy CSV viewer TUI - peek at your data fast

Project description

csvpeek

A fast CSV viewer in your terminal - peek at your data instantly ⚡

License Python

Csvpeek is a snappy, memory-efficient CSV viewer built for speed. Powered by DuckDB for fast SQL-backed querying and Urwid for a lean terminal UI.

Features

  • Fast - DuckDB streaming with LIMIT/OFFSET keeps startup instant, even with huge files
  • Large File Support - Pagination handles millions of rows without breaking a sweat
  • Cell Selection - Select and copy ranges with keyboard shortcuts
  • Column Sorting - Sort by any column instantly
  • Keyboard-First - Every action is a keystroke away

Quick Start

Installation

uv tool install csvpeek

Or install from source:

git clone https://github.com/giantatwork/csvpeek.git
cd csvpeek
pip install -e .

Usage

csvpeek your_data.csv

Keyboard Shortcuts

Key Action
/ Open filter dialog
r Reset all filters
Ctrl+D Next page
Ctrl+U Previous page
s Sort current column
c Copy selection to clipboard
w Save selection to file
Shift+Arrow Select cells
Arrow Keys Navigate (clears selection)
q Quit

Usage Examples

Basic Viewing

Open any CSV file and start navigating immediately:

csvpeek data.csv

Filtering

  1. Press / to open the filter dialog
  2. Enter filter values for any columns
  3. Press Enter to apply
  4. Filter matches are highlighted in red

Filter modes:

  • Literal mode: Case-insensitive substring search (e.g., scranton matches "Scranton")
  • Regex mode: Start with / for regex patterns (e.g., /^J matches names starting with J)
    • /\d+ - Contains digits
    • /sales|eng - Contains "sales" OR "eng"
    • /^test$ - Exactly "test"
    • All regex patterns are case-insensitive

Sorting

  1. Navigate to any column
  2. Press s to sort by that column
  3. Press s again to toggle ascending/descending

Selection & Copy

  1. Position cursor on starting cell
  2. Hold Shift and use arrow keys to select a range
  3. Press c to copy selection as tab-separated values
  4. Paste anywhere with Ctrl+V

Requirements

  • Python 3.12+
  • DuckDB >= 1.1.0
  • Urwid >= 2.1.0
  • Pyperclip >= 1.9.0

License

MIT License - see LICENSE file for details

Acknowledgments

Built with amazing open-source tools:

  • DuckDB - Embedded analytics database
  • Urwid - Lightweight terminal UI toolkit

Contact

Found a bug? Have a feature request? Open an issue!

Project details


Download files

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

Source Distribution

csvpeek-0.8.0.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

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

csvpeek-0.8.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file csvpeek-0.8.0.tar.gz.

File metadata

  • Download URL: csvpeek-0.8.0.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for csvpeek-0.8.0.tar.gz
Algorithm Hash digest
SHA256 5db3169452263a99e6c0b6083f8dd84ed40ca44f824b7b14be6b5bef2f7cb0af
MD5 af16389cfe0c7e753a19df8779eb9581
BLAKE2b-256 6b535be3ca7c71c168e0c010da841563107b640a8de32f5ebc9d138e0aea96c4

See more details on using hashes here.

File details

Details for the file csvpeek-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: csvpeek-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for csvpeek-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2d525f57584cab9fe7b950d5d0189f2381c4bda0b003a58e94ad1d5bac57652c
MD5 300a3f25e239b6b5c577b612dcc854e2
BLAKE2b-256 d4956547ee5b28df8c85c16ef44409f4358b821681697296349914682c02fece

See more details on using hashes here.

Supported by

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