Heim >Backend-Entwicklung >Python-Tutorial >Python-Beispiel für die effizienteste Methode zum Löschen einer bestimmten Zeile in einer großen Datei
Der folgende Editor bringt Ihnen einen Artikel über das Löschen einer bestimmten Zeile in einer großen Datei in Python (die effizienteste Methode). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf.
Wenn Sie Python zum Verarbeiten eines Textes verwenden und eine bestimmte Zeile darin löschen möchten, besteht die herkömmliche Idee darin, die Datei zuerst in den Speicher einzulesen und sie im Speicher zu ändern und dann in die Quelldatei schreiben.
Wenn Sie jedoch einen großen Text, z. B. einen Text auf GB-Ebene, verarbeiten möchten, erfordert diese Methode nicht nur viel Speicher, sondern auch das gleichzeitige Einlesen in den Speicher Speicherüberlauf verursachen.
Also müssen wir eine andere Denkweise anwenden, um damit umzugehen.
Wir können die open()-Methode verwenden, um die zu ändernde Datei in zwei Dateien aufzuteilen und sie dann Zeile für Zeile in den Speicher einzulesen gefunden haben, überschreiben Sie diese nacheinander mit den folgenden Zeilen. Die Implementierung finden Sie im folgenden Code.
with open('file.txt', 'r') as old_file: with open('file.txt', 'r+') as new_file: current_line = 0 # 定位到需要删除的行 while current_line < (del_line - 1): old_file.readline() current_line += 1 # 当前光标在被删除行的行首,记录该位置 seek_point = old_file.tell() # 设置光标位置 new_file.seek(seek_point, 0) # 读需要删除的行,光标移到下一行行首 old_file.readline() # 被删除行的下一行读给 next_line next_line = old_file.readline() # 连续覆盖剩余行,后面所有行上移一行 while next_line: new_file.write(next_line) next_line = old_file.readline() # 写完最后一行后截断文件,因为删除操作,文件整体少了一行,原文件最后一行需要去掉 new_file.truncate()
Das obige ist der detaillierte Inhalt vonPython-Beispiel für die effizienteste Methode zum Löschen einer bestimmten Zeile in einer großen Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!