Newline Tools
File processing utilities for working with massive datasets.
Installation
pip install newline-tools
CLI Usage
The newline command provides several subcommands:
newline <command> [options]
shuffle
Shuffle lines in a file:
newline shuffle <input_file> <output_file> [-b BUFFER_SIZE] [--progress] [--include_empty] [-r ROUNDS] [--seed SEED]
Options:
-b, --buffer_size: Buffer size in bytes (default: 1GB)--progress: Show progress bars during shuffling--include_empty: Include empty lines during shuffling (default: ignore empty lines)-r, --rounds: Number of shuffling rounds (default: 1)--seed: Seed for random number generator (for reproducibility)
dedupe
Remove duplicate lines:
newline dedupe <input_file> <output_file> [--progress] [--error_ratio ERROR_RATIO]
Options:
--progress: Show progress bar during deduplication--error_ratio: Error ratio for the Bloom filter (default: 1e-5)
split
Split a file into parts:
newline split <input_file> <output_prefix> (-n NUM_PARTS | -s SIZE | -p PROPORTIONS) [--progress]
Options:
-n, --num_parts: Number of parts to split into-s, --size: Size of each part (e.g., '100MB', '1GB')-p, --proportions: Split by proportions--progress: Show progress bar during splitting
Examples:
newline split input.txt output_prefix -n 5
newline split input.txt output_prefix -s 100MB
newline split input.txt output_prefix -p 0.3 0.3 0.4
sample
Sample lines from a file:
newline sample <input_file> <output_file> (-n NUM_LINES | -p PERCENTAGE) [--progress] [--seed SEED]
Options:
-n, --num_lines: Number of lines to sample-p, --percentage: Percentage of lines to sample--progress: Show progress bar during sampling--seed: Seed for random number generator (for reproducibility)
Python Usage
from newline_tools import Shuffle, Dedupe, Split, Sample
# Shuffle
shuffler = Shuffle('input.txt', buffer_size=2**24, progress=True, ignore_empty=True, rounds=2, seed=42)
shuffler.shuffle('output.txt')
# Dedupe
deduper = Dedupe('input.txt', progress=True)
deduper.dedupe('output.txt', error_ratio=1e-5)
# Split
splitter = Split('input.txt', progress=True)
splitter.split_by_parts('output_prefix', 5)
# or
splitter.split_by_size('output_prefix', '100MB')
# or
splitter.split_by_proportion('output_prefix', [0.3, 0.3, 0.4])
# Sample
sampler = Sample('input.txt', 'output.txt', sample_size=10000, progress=True, seed=42)
sampler.sample(method='reservoir') # or 'index'
License
Dedicated to the public domain (CC0). Use as you wish.
Release files for newline-tools 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| newline_tools-0.1.2.tar.gz | 10.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| newline_tools-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.4 kB
Release files / newline_tools-0.1.2.tar.gz
| Download URL | newline_tools-0.1.2.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f6904b245861fac1b58791301fb46f8a0a49b3e127d729f254d05168f38c492e
|
|
BLAKE2b-256 checksum How to use checksums |
a9ba287e03a048c7dfc090c33ceed0abd525a1c2377ba87ebcb36314873422da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / newline_tools-0.1.2-py3-none-any.whl
| Download URL | newline_tools-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56916a7e6c3ee5b7f5e4c8d95b63caebb5b1dd3605e357f63b0e697269ba0a8d
|
|
BLAKE2b-256 checksum How to use checksums |
6f6beb9ca19891642433ddd3444883287d2419c63676aff10f595725d115700a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|