„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man große CSV -Dateien in Python 2.7 effektiv behandeln?

Wie kann man große CSV -Dateien in Python 2.7 effektiv behandeln?

Gepostet am 2025-03-05
Durchsuche:471

How to Effectively Handle Large CSV Files in Python 2.7?

Lesen großer .csv -Dateien in Python

Problem: massive .csv -Dateien (bis zu 1 Million Zeilen, 200 Kolumnen) in Python 2.7 begleitet Speicherfehler. Diese Methode wird jedoch für große Dateien unpraktisch, da sie übermäßige Erinnerung verbraucht.

Lösung:

1. Verarbeiten Sie Zeiger, sobald sie produziert werden:

vermeiden Sie das Laden der gesamten Datei in Speicher. Verarbeiten Sie stattdessen Zeilen, sobald sie mit einer Generatorfunktion generiert werden.

def getstuff (Dateiname, Kriterium): mit offenem (Dateiname, "RB") als CSVFile: DataReader = CSV.Reader (CSVFile) Nächste Ertrag (DataReader) # Ergeben Sie die Header -Zeile Für Zeile in DataReader: Wenn Zeile [3] == Kriterium: Relief row

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
2. Verwenden Sie Generatorfunktionen zum Filtern:

Filterdaten beim Iterieren der Datei mit Generatorfunktionen filtern. Dieser Ansatz ermöglicht die Übereinstimmung mehrerer aufeinanderfolgender Zeilen, die ein bestimmtes Kriterium erfüllen.

def getstuff (Dateiname, Kriterium): mit offenem (Dateiname, "RB") als CSVFile: DataReader = CSV.Reader (CSVFile) Nächste Ertrag (DataReader) # Ergeben Sie die Header -Zeile Ergeben von Take the Take ( Lambda R: R [3] == Kriterium, DropHiny (Lambda R: R [3]! = Kriterium, DataReader)) return

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
3. Optimieren Sie den Speicherkonsum:

Refactor getData (), um auch eine Generatorfunktion zu verwenden, um sicherzustellen, dass nur eine Zeile in Erinnerung bleibt.

def getData (Dateiname, Kriterien): für Kriterien in Kriterien: Für Row in GetStuff (Dateiname, Kriterium): Rendite row

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
Zusätzliche Tipps für Geschwindigkeit:

    verwenden csv.reader mit einem Staugröße Parameter:
  • Lesen Sie Dateien in kleineren Chunks, um die Memory Footprint zu reduzieren. Es in einer Datenbank für eine schnellere und effizientere Verarbeitung.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3