„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 ich effizient zu einer bestimmten Zeile in einer großen Textdatei springen?

Wie kann ich effizient zu einer bestimmten Zeile in einer großen Textdatei springen?

Veröffentlicht am 06.11.2024
Durchsuche:602

How can I efficiently jump to a specific line in a large text file?

Optimieren von Zeilensprüngen in großen Textdateien: Ein alternativer Ansatz

Bei der Verarbeitung großer Textdateien mit Zeilen unterschiedlicher Länge ist dies oft ineffizient Lesen Sie nacheinander jede Zeile, um eine bestimmte Zeilennummer zu erreichen. Das in der Frage bereitgestellte Codebeispiel veranschaulicht diesen Ansatz, der eine möglicherweise langsame Iteration durch die gesamte Datei erfordert. Es gibt jedoch eine alternative Methode, die das Zeilenspringen durch Nutzung einer berechneten Offset-Liste optimiert.

Offsetbasiertes Zeilenspringen

Um diese Herausforderung zu meistern, ist ein effizienterer Ansatz erforderlich Dazu gehört das einmalige Lesen der Datei, um eine Liste der Zeilenversätze zu erstellen. Jeder Offset markiert die Startposition einer bestimmten Zeile. Durch das Speichern dieser Offsets können Sie direkt zu einer gewünschten Zeile springen, ohne die vorherigen zu verarbeiten.

Hier ist ein verbesserter Codeausschnitt:

# Read the file and build the line offset list
line_offset = []
offset = 0
with open(filename, "rb", 0) as file:
    for line in file:
        line_offset.append(offset)
        offset  = len(line)

# Jump to a specific line (line 141978 in this example)
file.seek(line_offset[141977])  # Adjust the index as lines are zero-indexed

# Process the target line as desired
DoSomethingWithThisLine(line)

Durch die Verwendung der Zeilenversatzliste können Sie direkt zur Zielzeile springen, wodurch die Verarbeitungszeit erheblich verkürzt und die Effizienz verbessert wird.

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