Optimieren von Zeilensprüngen in großen Textdateien
Das Verarbeiten großer Textdateien Zeile für Zeile kann bei der Suche nach einer bestimmten Zeile ineffizient sein. Der bereitgestellte Code durchläuft jede Zeile einer 15-MB-Datei, um die gewünschte Zeilennummer zu erreichen, und vernachlässigt dabei die Tatsache, dass sich die erforderliche Zeile möglicherweise viel früher in der Datei befindet.
Ein alternativer Ansatz
Um dieses Problem zu beheben, sollten Sie den Einsatz einer Optimierungstechnik in Betracht ziehen, die Zeilenversätze nutzt. Dazu muss die gesamte Datei einmal gelesen werden, um eine Liste zu erstellen, die den Startoffset jeder Zeile enthält.
Implementation
line_offset = [] # List to store line offsets
offset = 0 # Current offset
# Loop through each line in the file
for line in file:
line_offset.append(offset) # Store the current line offset
offset = len(line) # Update the offset for the next line
file.seek(0) # Reset the file pointer to the beginning
Verwendung
Um zu einer bestimmten Zeile (n) zu springen, suchen Sie einfach zum entsprechenden Offset:
line_number = n
file.seek(line_offset[line_number])
Dieser Ansatz macht die Verarbeitung aller Zwischenzeilen überflüssig, was zu einer erheblichen Leistungsverbesserung bei großen Dateien führt.
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