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 .

Windows

Install the Microsoft Visual C++ Redistributable to ensure DuckDB works on Windows

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.10.0.tar.gz (34.4 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.10.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: csvpeek-0.10.0.tar.gz
  • Upload date:
  • Size: 34.4 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.10.0.tar.gz
Algorithm Hash digest
SHA256 b0e0552dc533bfd4877cfca6f2c2ce74d8777e7a46e0606fa378f78c68b2b2e0
MD5 b2c5a7821ec8c349ce715b0da949c7e1
BLAKE2b-256 e25d3563a66d47ddf8f2ae9088a6957751d2b4a5d26681004a953cb262a22b10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csvpeek-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 18.1 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.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2344d602b2dd13addd1cf7e04b2a9296c5ae480bf0a17d8fdd3c86aee1720860
MD5 c3a6f36258250af81be8158c82e2aac7
BLAKE2b-256 6569b11abee30064001895131697e4273ec0ef70e770b046488ee168da9d6cc9

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