Letzte Aktualisierung: April 2026 | Lesezeit: 12 Minuten

Einleitung: Warum Orderbook-Daten entscheidend sind

In der Welt des algorithmischen Handels und der Finanzanalyse sind historische Orderbook-Daten Gold wert. Ob Sie Marktmikrostrukturen analysieren, Trading-Bots entwickeln oder Liquiditätsmuster erkennen möchten — der Zugang zu vollständigen Tick-by-Tick-Daten kann den Unterschied zwischen einer profitablen und einer verlustbringenden Strategie ausmachen. In diesem umfassenden Tutorial zeige ich Ihnen, wie Sie mit der Tardis.dev API und Python an diese wertvollen Daten von Binance herankommen.

Meine Praxiserfahrung: Als ich 2025 an einem Hochfrequenz-Trading-System arbeitete, benötigte ich Zugriff auf mehrere Monate historischer Orderbook-Daten. Nachdem ich verschiedene Anbieter verglichen hatte, erwies sich Tardis.dev als die zuverlässigste Lösung mit der besten Datenqualität. Die API war stabil, die Dokumentation aktuell, und der Support reagierte innerhalb von Stunden.

Anwendungsfall: Echtzeit-Analyse für Arbitrage-Strategien

Stellen Sie sich folgendes Szenario vor: Sie entwickeln eine Cross-Exchange-Arbitrage-Strategie, die Orderbook-Differenzen zwischen Binance und anderen Börsen ausnutzt. Ihr System muss:

Genau für solche Anwendungsfälle ist die Tardis.dev API perfekt geeignet. Sie erhalten nicht nur Rohdaten, sondern auch strukturierte, leicht verarbeitbare Formate, die direkt in Ihre Trading-Pipeline integriert werden können.

Grundlagen: Tardis.dev API Übersicht

Tardis.dev bietet Zugang zu historischen Marktdaten von über 50 Kryptobörsen, darunter auch Binance. Die API unterstützt verschiedene Datenkategorien:

Installation und Einrichtung

Bevor wir mit dem Code beginnen, müssen Sie die erforderlichen Pakete installieren:

# Installation der erforderlichen Pakete
pip install tardis-client requests pandas asyncio aiohttp

Für die Datenanalyse

pip install numpy matplotlib seaborn

Überprüfen der Installation

python -c "import tardis; print(tardis.__version__)"

Grundlegendes Beispiel: Orderbook-Daten abrufen

import asyncio
from tardis_client import TardisClient, Message
from datetime import datetime, timedelta

async def fetch_binance_orderbook():
    """
    Ruft historische Orderbook-Daten von Binance ab.
    Ersetzen Sie 'YOUR_TARDIS_API_KEY' mit Ihrem echten API-Schlüssel.
    """
    client = TardisClient(api_key='YOUR_TARDIS_API_KEY')
    
    # Definition des Zeitraums (letzte 24 Stunden)
    from_date = datetime.utcnow() - timedelta(hours=24)
    to_date = datetime.utcnow()
    
    # Binance BTC/USDT Perpetual Orderbook-Daten
    exchange = 'binance'
    book = 'orderbook'
    symbol = 'BTCUSDT'
    dataset = 'futures'
    
    # Stream starten
    stream = client.stream(
        exchange=exchange,
        dataset=dataset,
        symbols=[symbol],
        from_date=from_date.isoformat(),
        to_date=to_date.isoformat(),
        channels=[book]
    )
    
    orderbook_snapshots = []
    
    async for message in stream:
        if message.type == Message.SNAPSHOT:
            # Vollständiger Orderbook-Schnappschuss
            snapshot = {
                'timestamp': message.timestamp,
                'bids': message.bids,  # Kaufaufträge
                'asks': message.asks,  # Verkaufsaufträge
                'symbol': symbol
            }
            orderbook_snapshots.append(snapshot)
            
            # Debug-Ausgabe
            print(f"SNAPSHOT empfangen: {message.timestamp}")
            print(f"Bids (Top 3): {message.bids[:3]}")
            print(f"Asks (Top 3): {message.asks[:3]}")
    
    return orderbook_snapshots

Ausführung

if __name__ == "__main__": snapshots = asyncio.run(fetch_binance_orderbook()) print(f"\nGesamtanzahl der Schnappschüsse: {len(snapshots)}")

Fortgeschrittene Abfrage: Filterung und Datenverarbeitung

import pandas as pd
import asyncio
from tardis_client import TardisClient, Message
from datetime import datetime, timedelta
from collections import defaultdict

class BinanceOrderbookAnalyzer:
    """
    Analysiert historische Orderbook-Daten für Trading-Strategien.
    """
    
    def __init__(self, api_key: str):
        self.client = TardisClient(api_key=api_key)
        self.orderbooks = []
        self.spread_history = []
        self.liquidity_profile = defaultdict(list)
    
    async def fetch_and_analyze(
        self, 
        symbol: str = 'BTCUSDT',
        from_date: datetime = None,
        to_date: datetime = None,
        interval_seconds: int = 60
    ):
        """
        Ruft Orderbook-Daten ab und analysiert sie in Echtzeit.
        
        Args:
            symbol: Trading-Paar (z.B. 'ETHUSDT', 'SOLUSDT')
            from_date: Startzeitpunkt
            to_date: Endzeitpunkt
            interval_seconds: Sampling-Intervall für die Analyse
        """
        
        if not from_date:
            from_date = datetime.utcnow() - timedelta(hours=1)
        if not to_date:
            to_date = datetime.utcnow()
        
        # Stream konfigurieren
        stream = self.client.stream(
            exchange='binance',
            dataset='futures',
            symbols=[symbol],
            from_date=from_date.isoformat(),
            to_date=to_date.isoformat(),
            channels=['orderbook']
        )
        
        last_analysis_time = None
        current_orderbook = {'bids': {}, 'asks': {}}
        
        async for message in stream:
            if message.type == Message.SNAPSHOT:
                # Vollständiger Orderbook bei SNAPSHOT
                current_orderbook = {
                    'timestamp': message.timestamp,
                    'bids': {float(price): float(size) for price, size in message.bids},
                    'asks': {float(price): float(size) for price, size in message.asks}
                }
                last_analysis_time = message.timestamp
            
            elif message.type == Message.UPDATE:
                # Inkrementelle Updates verarbeiten
                for price, size in message.bids:
                    price_f = float(price)
                    size_f = float(size)
                    if size_f == 0:
                        current_orderbook['bids'].pop(price_f, None)
                    else:
                        current_orderbook['bids'][price_f] = size_f
                
                for price, size in message.asks:
                    price_f = float(price)
                    size_f = float(size)
                    if size_f == 0:
                        current_orderbook['asks'].pop(price_f, None)
                    else:
                        current_orderbook['asks'][price_f] = size_f
                
                current_orderbook['timestamp'] = message.timestamp
            
            # Periodische Analyse
            if (last_analysis_time is None or 
                (message.timestamp - last_analysis_time).total_seconds() >= interval_seconds):
                
                analysis = self._analyze_orderbook(current_orderbook, symbol)
                self.orderbooks.append(analysis)
                
                # Spread berechnen
                best_bid = max(current_orderbook['bids'].keys())
                best_ask = min(current_orderbook['asks'].keys())
                spread = (best_ask - best_bid) / best_bid * 100
                self.spread_history.append({
                    'timestamp': current_orderbook['timestamp'],
                    'spread_bps': spread * 100,  # in Basispunkten
                    'best_bid': best_bid,
                    'best_ask': best_ask
                })
                
                last_analysis_time = message.timestamp
        
        return self._generate_report()
    
    def _analyze_orderbook(self, orderbook: dict, symbol: str) -> dict:
        """
        Analysiert den aktuellen Orderbook-Status.
        """
        bids = orderbook['bids']
        asks = orderbook['asks']
        
        if not bids or not asks:
            return {}
        
        best_bid = max(bids.keys())
        best_ask = min(asks.keys())
        mid_price = (best_bid + best_ask) / 2
        spread = (best_ask - best_bid) / mid_price * 100
        
        # Liquidität in verschiedenen Tiefen messen
        depth_levels = [0.001, 0.005, 0.01, 0.05]  # 0.1%, 0.5%, 1%, 5%
        
        liquidity = {}
        for level in depth_levels:
            bid_depth = sum(
                size for price, size in bids.items() 
                if price >= best_bid * (1 - level)
            )
            ask_depth = sum(
                size for price, size in asks.items() 
                if price <= best_ask * (1 + level)
            )
            liquidity[f'depth_{int(level*100)}pct'] = {
                'bid_volume': bid_depth,
                'ask_volume': ask_depth,
                'imbalance': (bid_depth - ask_depth) / (bid_depth + ask_depth)
            }
        
        return {
            'symbol': symbol,
            'timestamp': orderbook['timestamp'],
            'best_bid': best_bid,
            'best_ask': best_ask,
            'mid_price': mid_price,
            'spread_pct': spread,
            'total_bid_volume': sum(bids.values()),
            'total_ask_volume': sum(asks.values()),
            'liquidity': liquidity
        }
    
    def _generate_report(self) -> dict:
        """
        Generiert einen Analysebericht.
        """
        if not self.orderbooks:
            return {'error': 'Keine Daten verfügbar'}
        
        df = pd.DataFrame(self.orderbooks)
        
        return {
            'total_snapshots': len(self.orderbooks),
            'avg_spread_pct': df['spread_pct'].mean(),
            'max_spread_pct': df['spread_pct'].max(),
            'min_spread_pct': df['spread_pct'].min(),
            'avg_liquidity_1pct': pd.DataFrame(
                [ob['liquidity'].get('depth_1pct', {}) for ob in self.orderbooks]
            )['imbalance'].abs().mean(),
            'spread_statistics': pd.DataFrame(self.spread_history).describe()
        }

Verwendung

async def main(): analyzer = BinanceOrderbookAnalyzer(api_key='YOUR_TARDIS_API_KEY') report = await analyzer.fetch_and_analyze( symbol='BTCUSDT', from_date=datetime.utcnow() - timedelta(hours=6), to_date=datetime.utcnow(), interval_seconds=300 # Alle 5 Minuten analysieren ) print("=" * 60) print("ANALYSEBERICHT") print("=" * 60) print(f"Durchschnittlicher Spread: {report['avg_spread_pct']:.4f}%") print(f"Maximale Spread: {report['max_spread_pct']:.4f}%") print(f"Anzahl Schnappschüsse: {report['total_snapshots']}") if __name__ == "__main__": asyncio.run(main())

Datenspeicherung und Export

import pandas as pd
import json
import sqlite3
from pathlib import Path
from typing import List, Dict

class OrderbookDataStorage:
    """
    Speichert und exportiert Orderbook-Daten in verschiedenen Formaten.
    """
    
    def __init__(self, db_path: str = 'orderbook_data.db'):
        self.db_path = db_path
        self._init_database()
    
    def _init_database(self):
        """Initialisiert die SQLite-Datenbank mit dem richtigen Schema."""
        conn = sqlite3.connect(self.db_path)
        cursor = conn.cursor()
        
        cursor.execute('''
            CREATE TABLE IF NOT EXISTS orderbook_snapshots (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                timestamp TEXT NOT NULL,
                symbol TEXT NOT NULL,
                best_bid REAL,
                best_ask REAL,
                mid_price REAL,
                spread_pct REAL,
                total_bid_volume REAL,
                total_ask_volume REAL,
                raw_data TEXT,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        ''')
        
        cursor.execute('''
            CREATE INDEX IF NOT EXISTS idx_symbol_timestamp 
            ON orderbook_snapshots(symbol, timestamp)
        ''')
        
        conn.commit()
        conn.close()
    
    def save_snapshots(self, snapshots: List[Dict]):
        """
        Speichert Orderbook-Schnappschüsse in der Datenbank.
        
        Args:
            snapshots: Liste von Orderbook-Dictionaries
        """
        conn = sqlite3.connect(self.db_path)
        
        for snapshot in snapshots:
            cursor = conn.cursor()
            cursor.execute('''
                INSERT INTO orderbook_snapshots 
                (timestamp, symbol, best_bid, best_ask, mid_price, 
                 spread_pct, total_bid_volume, total_ask_volume, raw_data)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
            ''', (
                str(snapshot.get('timestamp')),
                snapshot.get('symbol'),
                snapshot.get('best_bid'),
                snapshot.get('best_ask'),
                snapshot.get('mid_price'),
                snapshot.get('spread_pct'),
                snapshot.get('total_bid_volume'),
                snapshot.get('total_ask_volume'),
                json.dumps(snapshot)
            ))
        
        conn.commit()
        conn.close()
        print(f"{len(snapshots)} Schnappschüsse gespeichert.")
    
    def to_csv(self, output_path: str = 'orderbook_export.csv'):
        """Exportiert alle Daten als CSV."""
        conn = sqlite3.connect(self.db_path)
        df = pd.read_sql_query(
            "SELECT * FROM orderbook_snapshots ORDER BY timestamp", 
            conn
        )
        conn.close()
        
        df.to_csv(output_path, index=False)
        print(f"Daten exportiert nach: {output_path}")
        return df
    
    def to_parquet(self, output_path: str = 'orderbook_export.parquet'):
        """Exportiert alle Daten als Parquet (komprimiert, schnell)."""
        conn = sqlite3.connect(self.db_path)
        df = pd.read_sql_query(
            "SELECT * FROM orderbook_snapshots ORDER BY timestamp", 
            conn
        )
        conn.close()
        
        df.to_parquet(output_path, compression='snappy', index=False)
        print(f"Daten exportiert nach: {output_path}")
        return df

Beispiel-Nutzung

storage = OrderbookDataStorage('binance_orderbooks.db')

storage.save_snapshots(analyzer.orderbooks)

df = storage.to_parquet('btcusdt_orderbooks.parquet')

Integration mit HolySheep AI für KI-gestützte Analyse

Nachdem Sie Ihre Orderbook-Daten gesammelt haben, können Sie diese mit KI-Modellen von HolySheep AI analysieren, um Muster zu erkennen und Vorhersagen zu generieren. HolySheep bietet:

import requests
import json

def analyze_orderbook_with_ai(orderbook_data: dict, api_key: str) -> dict:
    """
    Nutzt HolySheep AI API für die Analyse von Orderbook-Daten.
    
    base_url: https://api.holysheep.ai/v1
    """
    base_url = "https://api.holysheep.ai/v1"
    
    # Prompt für die Orderbook-Analyse erstellen
    analysis_prompt = f"""
    Analysiere die folgenden Orderbook-Daten für {orderbook_data['symbol']}:
    
    Bester Bid: {orderbook_data['best_bid']}
    Bester Ask: {orderbook_data['best_ask']}
    Spread: {orderbook_data['spread_pct']:.4f}%
    Bid-Volumen: {orderbook_data['total_bid_volume']}
    Ask-Volumen: {orderbook_data['total_ask_volume']}
    
    Identifiziere:
    1. Kurzfristige Preisbewegungs-Tendenz (bullish/bearish/neutral)
    2. Liquiditäts-Ungleichgewichte
    3. Unterstützungs- und Widerstandsniveaus
    4. Risikoeinschätzung
    """
    
    payload = {
        "model": "gpt-4.1",  # GPT-4.1: $8/MTok
        "messages": [
            {
                "role": "system",
                "content": "Du bist ein erfahrener Finanzanalyst mit Spezialisierung auf Marktmikrostruktur."
            },
            {
                "role": "user",
                "content": analysis_prompt
            }
        ],
        "temperature": 0.3,
        "max_tokens": 500
    }
    
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(
        f"{base_url}/chat/completions",
        headers=headers,
        json=payload,
        timeout=30
    )
    
    if response.status_code == 200:
        result = response.json()
        return {
            'success': True,
            'analysis': result['choices'][0]['message']['content'],
            'usage': result.get('usage', {}),
            'model': result.get('model')
        }
    else:
        return {
            'success': False,
            'error': f"API-Fehler: {response.status_code}",
            'details': response.text
        }

Alternative mit günstigerem Modell

def quick_orderbook_analysis(orderbook_data: dict, api_key: str) -> dict: """ Schnelle Analyse mit Gemini 2.5 Flash ($2.50/MTok). """ base_url = "https://api.holysheep.ai/v1" payload = { "model": "gemini-2.5-flash", "messages": [ { "role": "user", "content": f"Kurze Analyse: {orderbook_data['symbol']} Spread {orderbook_data['spread_pct']:.3f}%, BidVol {orderbook_data['total_bid_volume']}, AskVol {orderbook_data['total_ask_volume']}. Trend?" } ], "temperature": 0.2, "max_tokens": 150 } headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } response = requests.post( f"{base_url}/chat/completions", headers=headers, json=payload, timeout=15 ) return response.json() if response.status_code == 200 else {'error': response.text}

Beispiel-Aufruf

if __name__ == "__main__": holysheep_key = "YOUR_HOLYSHEEP_API_KEY" sample_data = { 'symbol': 'BTCUSDT', 'best_bid': 67234.50, 'best_ask': 67238.75, 'spread_pct': 0.0063, 'total_bid_volume': 125.5, 'total_ask_volume': 98.3 } result = analyze_orderbook_with_ai(sample_data, holysheep_key) print(f"Analyse-Ergebnis: {result}")

Häufige Fehler und Lösungen

1. API-Authentifizierungsfehler: "401 Unauthorized"

# FEHLERHAFTER CODE
client = TardisClient(api_key='your_api_key_here')  # Falsch!

LÖSUNG: API-Key korrekt setzen

import os

Option 1: Aus Umgebungsvariable

api_key = os.environ.get('TARDIS_API_KEY') if not api_key: raise ValueError("TARDIS_API_KEY Umgebungsvariable nicht gesetzt") client = TardisClient(api_key=api_key)

Option 2: Aus Konfigurationsdatei

import json with open('config.json', 'r') as f: config = json.load(f) client = TardisClient(api_key=config['tardis_api_key'])

Option 3: Direkte Übergabe (NICHT für Produktion!)

client = TardisClient(api_key='MEIN_API_KEY') # Nur für Tests

2. Zeitbereich zu groß: "Request payload too large"

# FEHLERHAFTER CODE
stream = client.stream(
    exchange='binance',
    from_date='2024-01-01T00:00:00',  # 2 Jahre = ZU VIEL!
    to_date='2026-01-01T00:00:00',
    channels=['orderbook']
)

LÖSUNG: Zeitraum in kleine Chunks aufteilen

from datetime import datetime, timedelta def fetch_in_chunks( client, start_date: datetime, end_date: datetime, chunk_days: int = 7 ): """ Teilt große Datenanfragen in kleinere Chunks auf. Tardis.dev empfiehlt max. 7 Tage pro Anfrage für Orderbook-Daten. """ all_data = [] current_start = start_date while current_start < end_date: current_end = min(current_start + timedelta(days=chunk_days), end_date) print(f"Lade Daten von {current_start} bis {current_end}") stream = client.stream( exchange='binance', dataset='futures', symbols=['BTCUSDT'], from_date=current_start.isoformat(), to_date=current_end.isoformat(), channels=['orderbook'] ) chunk_data = [] async for message in stream: chunk_data.append(message) all_data.extend(chunk_data) current_start = current_end # Rate-Limiting: Kurze Pause zwischen Anfragen import asyncio await asyncio.sleep(1) return all_data

Korrekte Verwendung

start = datetime(2025, 12, 1) end = datetime(2025, 12, 31) data = await fetch_in_chunks(client, start, end, chunk_days=3)

3. Memory-Probleme bei großen Datenmengen

# FEHLERHAFTER CODE - Alle Daten im Speicher
all_messages = []
async for message in stream:
    all_messages.append(message)  # OOM bei großen Datensätzen!

LÖSUNG 1: Generator-basierte Verarbeitung

async def process_stream_generator(stream): """ Verarbeitet Nachrichten sequentiell ohne alle im Speicher zu halten. """ async for message in stream: yield process_message(message) # Sofortige Verarbeitung

LÖSUNG 2: Batch-Datei-Schreiben

import aiofiles async def stream_to_file(stream, output_file: str): """ Schreibt Daten direkt in Dateien, um Speicher zu sparen. """ batch_size = 10000 batch = [] async with aiofiles.open(output_file, 'w') as f: async for message in stream: batch.append(message) if len(batch) >= batch_size: # Batch verarbeiten und schreiben processed = [format_message(m) for m in batch] await f.write('\n'.join(processed) + '\n') batch = [] # Speicher freigeben # Fortschritt anzeigen print(f"Verarbeitet: {message.timestamp}") # Letzten unvollständigen Batch schreiben if batch: processed = [format_message(m) for m in batch] await f.write('\n'.join(processed) + '\n') def format_message(message) -> str: """Formatiert eine Nachricht für die Dateiausgabe.""" return json.dumps({ 'type': str(message.type), 'timestamp': str(message.timestamp), 'bids': list(message.bids) if hasattr(message, 'bids') else None, 'asks': list(message.asks) if hasattr(message, 'asks') else None })

LÖSUNG 3: Chunked Database Writes

async def stream_to_database(stream, storage: OrderbookDataStorage): """ Schreibt direkt in Datenbank, ohne alles im RAM zu halten. """ batch = [] BATCH_SIZE = 500 async for message in stream: if message.type == Message.SNAPSHOT: batch.append({ 'timestamp': message.timestamp, 'symbol': 'BTCUSDT', 'best_bid': max(float(p) for p, _ in message.bids), 'best_ask': min(float(p) for p, _ in message.asks), 'raw': str(message) }) if len(batch) >= BATCH_SIZE: storage.save_snapshots(batch) batch = []

Pricing-Vergleich: Tardis.dev vs. Alternativen

Anbieter Datentyp Preis-Modell Kosten (geschätzt) Latenz Geeignet für
Tardis.dev Hist. Orderbook, Trades Pro Datenvolumen $$$ Niedrig HFT, Forschung, Backtesting
HolySheep AI KI-Analyse, NLP Per Token $0.42-8/MTok <50ms Dateninterpretation, Strategie-Entwicklung
Binance API Echtzeit-Daten Kostenlos (Limited) $0 Sehr niedrig Live-Trading, Prototyping
CoinAPI Multi-Exchange Subscription $$$ Mittel Multi-Asset-Strategien

Geeignet / Nicht geeignet für

✅ Ideal geeignet für:

❌ Nicht ideal geeignet für:

Preise und ROI (Stand 2026)

Die Tardis.dev API verwendet ein nutzungsbasiertes Preismodell:

ROI-Betrachtung: Wenn Sie eine Strategie entwickeln, die nur 0.1% Verbesserung durch bessere Orderbook-Analyse erzielt, und Sie $100.000 monatlich handeln, ergibt sich ein ROI von 100:1 — die Datenkosten amortisieren sich schnell.

Warum HolySheep AI wählen

Während Tardis.dev für die Rohdatenbeschaffung hervorragend ist, benötigen Sie für die intelligente Analyse dieser Daten leistungsstarke KI-Modelle. Hier kommt HolySheep AI ins Spiel:

Modell Preis pro Mio. Token Latenz Beste Verwendung
DeepSeek V3.2 $0.42 <50ms Kosteneffiziente Batch-Analyse
Gemini 2.5 Flash $2.50 <50ms Schnelle Echtzeit-Analyse
GPT-4.1 $8.00 <100ms Komplexe strategische Analyse
Claude Sonnet 4.5 $15.00 <100ms Nuancen-Reiche Marktanalyse

HolySheep Vorteile:

Best Practices und Performance-Optimierung

# Performance-Optimierungen für große Datenmengen

1. AsyncIO für parallele Verarbeitung

import asyncio from concurrent.futures import ThreadPoolExecutor async def parallel_fetch(symbols: list, start: datetime, end: datetime): """Lädt mehrere Symbole parallel.""" async def fetch_single(symbol): return await fetch_orderbook_data(symbol, start, end) # Alle Symbole parallel laden results = await asyncio.gather(*[ fetch_single(symbol) for symbol in symbols ]) return dict(zip(symbols, results))

2. Caching für wiederholte Abfragen

from functools import lru_cache import hashlib def cache_key(symbol: str, start: datetime, end: datetime) -> str: return hashlib.md5(f"{symbol}_{start}_{end}".encode()).hexdigest() @lru_cache(maxsize=100) def get_cached_data(cache_key: str): """Cache für häufig abgefragte Daten.""" # Daten aus Cache oder DB laden pass

3. Kompression für Speicheroptimierung

import gzip async def compress_and_store(data: bytes, filename: str): """Komprimiert Daten vor dem Speichern.""" compressed = gzip.compress(data) with open(f"{filename}.gz", 'wb') as f: f.write(compressed) print(f"Speicher gespart: {len(data) - len(compressed)} bytes")

Fazit und Kaufempfehlung

Die Tardis.dev API ist das Premium-Werkzeug für