Heim > Artikel > Backend-Entwicklung > Wie springe ich effizient zu einer bestimmten Zeile in einer großen Textdatei?
Springen zu einer bestimmten Zeile in einer großen Textdatei
Beim Umgang mit großen Textdateien kommt es häufig vor, dass man direkt springen muss zu einer bestimmten Zeile. Ein einfacher Ansatz besteht darin, die Datei iterativ durchzulesen. Dies kann jedoch ineffizient sein, wenn Sie die Zielzeilennummer im Voraus kennen.
Das Problem:
Verwendung des Code-Snippets vorausgesetzt:
startFromLine = 141978 urlsfile = open(filename, "rb", 0) linesCounter = 1 for line in urlsfile: if linesCounter > startFromLine: DoSomethingWithThisLine(line) linesCounter += 1
Dieser Code liest die Datei Zeile für Zeile und erfordert die Verarbeitung aller vorhergehenden Zeilen, auch wenn diese irrelevant sind.
Eine effizientere Lösung:
Um effizient zu einer bestimmten Zeile zu springen, können Sie einen zweistufigen Ansatz verwenden:
Erstellen Sie eine Offset-Liste:
Zielzeile suchen:
Hier ist ein Beispiel:
line_offset = [] offset = 0 for line in file: line_offset.append(offset) offset += len(line) file.seek(0) target_line = 141978 file.seek(line_offset[target_line])
Mit diesem Ansatz können Sie direkt zur gewünschten Zeile springen und so den unnötigen Aufwand für die Verarbeitung irrelevanter Zeilen vermeiden.
Das obige ist der detaillierte Inhalt vonWie springe ich effizient zu einer bestimmten Zeile in einer großen Textdatei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!