JSONL in Python: Lesen, Schreiben & Parsen

Eine vollständige Anleitung zur Arbeit mit JSONL (JSON Lines)-Dateien in Python. Lernen Sie das Lesen, Schreiben, Parsen und Streamen von JSONL-Daten mit integrierten Modulen, pandas und Hochleistungsbibliotheken.

Letzte Aktualisierung: Februar 2026

Warum Python für JSONL?

Python ist die beliebteste Sprache für die Arbeit mit JSONL-Dateien, und das aus gutem Grund. Das integrierte json-Modul verarbeitet JSON-Parsing von Haus aus, die Datei-Iteration ist standardmäßig speichereffizient, und das Ökosystem bietet leistungsstarke Bibliotheken wie pandas und orjson für spezialisierte Workflows. Ob Sie Machine-Learning-Datensätze, Anwendungsprotokolle oder API-Antworten verarbeiten — Python macht die JSONL-Verarbeitung unkompliziert.

JSONL (JSON Lines) speichert ein JSON-Objekt pro Zeile und ist damit ideal für Streaming, Append-Only-Protokollierung und die Verarbeitung großer Datensätze, ohne alles in den Speicher laden zu müssen. Pythons zeilenweises Lesen von Dateien passt perfekt zu diesem Format. In dieser Anleitung lernen Sie drei Ansätze zum Lesen von JSONL, zwei Ansätze zum Schreiben und den Umgang mit Dateien, die zu groß für den Arbeitsspeicher sind.

JSONL-Dateien in Python lesen

Es gibt mehrere Möglichkeiten, JSONL-Dateien in Python zu lesen, die jeweils für verschiedene Anwendungsfälle geeignet sind. Das Standard-json-Modul funktioniert für die meisten Szenarien, pandas ist praktisch für tabellarische Analysen, und Generatoren eignen sich am besten für große Dateien.

Der einfachste Ansatz verwendet Pythons integriertes json-Modul. Öffnen Sie die Datei, iterieren Sie zeilenweise und parsen Sie jede Zeile mit json.loads(). Dadurch werden alle Datensätze in eine Liste im Speicher geladen.

Grundlegendes Lesen mit dem json-Modul
import json
records = []
with open('data.jsonl', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if line: # Skip empty lines
records.append(json.loads(line))
print(f'Loaded {len(records)} records')
print(records[0])

Wenn Ihre JSONL-Daten tabellarisch sind (gleiche Schlüssel in jedem Datensatz), kann pandas sie direkt mit einem einzigen Funktionsaufruf in einen DataFrame einlesen. Dies ist der schnellste Weg, um mit der Analyse strukturierter JSONL-Daten zu beginnen.

Lesen mit pandas
import pandas as pd
# Read entire file into a DataFrame
df = pd.read_json('data.jsonl', lines=True)
print(df.head())
print(f'Shape: {df.shape}')
# For large files, read in chunks
chunks = pd.read_json('large.jsonl', lines=True, chunksize=10000)
for chunk in chunks:
# Process each chunk (DataFrame)
print(f'Chunk shape: {chunk.shape}')

Für Dateien, die zu groß für den Arbeitsspeicher sind, verwenden Sie eine Generator-Funktion. Diese gibt jeweils einen Datensatz zurück und hält den Speicherverbrauch konstant, unabhängig von der Dateigröße. Dies ist das empfohlene Muster für produktive Datenpipelines.

Generator-Muster für große Dateien
import json
from typing import Iterator, Any
def read_jsonl(path: str) -> Iterator[dict[str, Any]]:
"""Read a JSONL file lazily, yielding one record at a time."""
with open(path, 'r', encoding='utf-8') as f:
for line_num, line in enumerate(f, 1):
line = line.strip()
if not line:
continue
try:
yield json.loads(line)
except json.JSONDecodeError as e:
print(f'Skipping invalid JSON at line {line_num}: {e}')
# Process records one at a time
for record in read_jsonl('large_data.jsonl'):
process(record) # Only one record in memory at a time

JSONL-Dateien in Python schreiben

Das Schreiben von JSONL-Dateien ist unkompliziert: Serialisieren Sie jeden Datensatz als JSON-String und hängen Sie ein Zeilenumbruchzeichen an. Die Schlüsselregel lautet: ein JSON-Objekt pro Zeile, ohne nachgestellte Kommas oder umschließendes Array.

Verwenden Sie json.dumps() zur Serialisierung jedes Datensatzes und schreiben Sie ihn gefolgt von einem Zeilenumbruch. Setzen Sie ensure_ascii=False, um Unicode-Zeichen wie Chinesisch, Japanisch oder Emoji in der Ausgabe beizubehalten.

Grundlegendes Schreiben mit dem json-Modul
import json
records = [
{"id": 1, "name": "Alice", "age": 30},
{"id": 2, "name": "Bob", "age": 25},
{"id": 3, "name": "Charlie", "age": 35},
]
with open('output.jsonl', 'w', encoding='utf-8') as f:
for record in records:
f.write(json.dumps(record, ensure_ascii=False) + '\n')
print(f'Wrote {len(records)} records to output.jsonl')

Wenn Ihre Daten bereits in einem pandas DataFrame vorliegen, verwenden Sie to_json() mit orient='records' und lines=True, um sie direkt als JSONL zu exportieren. Dies ist die Umkehrung von pd.read_json() mit lines=True.

Schreiben mit pandas
import pandas as pd
df = pd.DataFrame([
{"id": 1, "name": "Alice", "age": 30},
{"id": 2, "name": "Bob", "age": 25},
{"id": 3, "name": "Charlie", "age": 35},
])
# Write DataFrame to JSONL
df.to_json('output.jsonl', orient='records', lines=True, force_ascii=False)
print(f'Wrote {len(df)} records to output.jsonl')

Python-Bibliotheken für JSONL

Python bietet mehrere JSON-Parsing-Bibliotheken mit unterschiedlichen Leistungsmerkmalen. Die Wahl der richtigen hängt von Ihrer Dateigröße und den Leistungsanforderungen ab.

json (stdlib)

Integriert

Pythons integriertes json-Modul erfordert keine Installation und funktioniert überall. Es ist für die meisten JSONL-Workloads ausreichend und unterstützt alle Standard-JSON-Typen. Die Leistung ist für Dateien bis zu einigen hundert MB angemessen.

orjson

Schnellste

orjson ist die schnellste Python-JSON-Bibliothek, geschrieben in Rust. Sie bietet 2–10x schnelleres Parsen und Serialisieren im Vergleich zum Standard-json-Modul. Sie gibt Bytes statt Strings aus und unterstützt nativ Dataclasses, datetime, numpy und UUID-Typen.

ujson

Schnell

ujson (UltraJSON) ist eine C-basierte JSON-Bibliothek, die 2–5x schneller als das Standard-json-Modul ist. Ihre API ist nahezu identisch mit dem integrierten json-Modul, was sie zu einem Drop-in-Ersatz macht. Ein guter Kompromiss zwischen Kompatibilität und Geschwindigkeit.

Große JSONL-Dateien streamen

Bei der Verarbeitung von JSONL-Dateien im Gigabyte-Bereich benötigen Sie einen Streaming-Ansatz, der Daten in Stapeln liest, transformiert und schreibt. Dies hält den Speicherverbrauch konstant und ermöglicht die Fortschrittsüberwachung.

Große JSONL-Dateien streamen
import json
import sys
def process_large_jsonl(
input_path: str,
output_path: str,
batch_size: int = 1000
) -> int:
"""Stream-process a large JSONL file in batches."""
processed = 0
batch: list[dict] = []
with open(input_path, 'r') as fin, \
open(output_path, 'w') as fout:
for line in fin:
line = line.strip()
if not line:
continue
record = json.loads(line)
# Transform the record
record['processed'] = True
batch.append(record)
if len(batch) >= batch_size:
for r in batch:
fout.write(json.dumps(r) + '\n')
processed += len(batch)
batch.clear()
print(f'\rProcessed {processed} records...', end='')
# Write remaining records
for r in batch:
fout.write(json.dumps(r) + '\n')
processed += len(batch)
print(f'\nDone. Processed {processed} records total.')
return processed
# Usage
process_large_jsonl('input.jsonl', 'output.jsonl', batch_size=5000)

Dieses Muster verwendet konstanten Speicher, indem Datensätze in Stapeln fester Größe verarbeitet werden. Der Parameter batch_size steuert den Kompromiss zwischen Speicherverbrauch und I/O-Effizienz. Für die meisten Systeme funktionieren Stapel von 1.000 bis 10.000 Datensätzen gut. Die Fortschrittsanzeige hilft bei der Überwachung lang laufender Aufträge.

Probieren Sie unsere kostenlosen JSONL-Tools

Möchten Sie keinen Code schreiben? Verwenden Sie unsere kostenlosen Online-Tools, um JSONL-Dateien direkt in Ihrem Browser anzuzeigen, zu validieren und zu konvertieren.

Mit JSONL-Dateien online arbeiten

JSONL-Dateien bis zu 1 GB direkt im Browser anzeigen, validieren und konvertieren. Kein Upload erforderlich, 100 % privat.

Häufig gestellte Fragen

JSONL in Python — Lesen, Schreiben, Streamen & Validieren...