Ich verwende derzeit ein C++ - Skript mit einem Python-Wrapper, um eine größere Textdatei (15 GB) Zeile für Zeile zu bearbeiten. Effektiv liest es eine Zeile aus der Datei input.txt, verarbeitet sie und gibt das Ergebnis an output.txt aus. Ich bin mit der straigtforward Schleife hier (inp als input.txt geöffnet wurde, aus wie output.txt geöffnet):Wie überspringe ich effektiv die ersten n Zeilen in einer Datei mit Python?
for line in inp:
result = operate(line)
out.write(result)
jedoch wegen der C++ Skript Fragen, hat es einige Ausfallraten, die die Ursachen Schleife nach etwa zehn Millionen Iterationen. Dies lässt mich mit einer Ausgabedatei, die nur mit 10% der Eingabe gemacht wird.
Da ich keine Möglichkeit habe, das ursprüngliche Skript zu reparieren, dachte ich darüber nach, es einfach dort neu zu starten, wo es aufgehört hat. Ich zählte die Linien von output.txt, machte eine andere namens output2.txt und begann den folgenden Code:
k = 0
for line in inp:
if k < 12123253:
k + = 1
else:
result = operate(line)
out2.write(result)
k + = 1
jedoch im Vergleich zu, wenn ich die Linien zählte, die unter einer Minute beendet dieses Verfahren dauert lange Stunden bis zur gewünschten Linie.
Warum ist diese Methode ineffizient? Gibt es einen schnelleren? Ich bin auf einem Windows-PC mit einer starken Rechenleistung (72 GB RAM, gute Prozessoren) und Python 2.7.
Ich denke, tell (aufzuzeichnen, wo Sie waren) und suchen (in Ihrem nächsten Lauf zu diesem Punkt zurückzukehren) wahrscheinlich aus Ihnen helfen könnten. http://stackoverflow.com/questions/3299213/python-how-can-i-open-a-file-and-specify-the-offset-in-bytes –