Possible Duplicate:
Get last n lines of a file with Python, similar to tail
Read a file in reverse order using pythonPython Lesen nur das Ende des großen Text
Datei Ich habe eine Datei, die in der Größe über 15 GB, es ist eine Protokolldatei, die ich angeblich aus der Ausgabe zu analysieren. Ich habe bereits eine grundlegende Analyse einer ähnlichen, aber sehr kleinen Datei mit nur wenigen Zeilen der Protokollierung durchgeführt. Parsing Strings ist nicht das Problem. Das Problem ist die riesige Datei und die Menge der redundanten Daten, die sie enthält.
Im Grunde versuche ich ein Python-Skript zu machen, das ich sagen könnte; Zum Beispiel, geben Sie mir 5000 letzte Zeilen der Datei. Das ist wieder grundlegend mit den Argumenten und all dem, nichts besonderes dort, das kann ich machen.
Aber wie definiere oder sage ich dem Dateileser, NUR die Zeilenanzahl zu lesen, die ich am Ende der Datei angegeben habe? Ich versuche, die huuuuuuge Menge an Zeilen am Anfang einer Datei zu überspringen, da ich nicht daran interessiert bin, und um ehrlich zu sein, dauert das Lesen von etwa 15 GB Zeilen aus einer TXT-Datei zu lange. Gibt es eine Möglichkeit, sich zu irren .. Lese von .. Ende der Datei? Macht das überhaupt Sinn?
Es läuft alles auf das Problem des Lesens einer 15GB-Datei ab, Zeile für Zeile dauert zu lange. Also möchte ich am Anfang die bereits redundanten Daten (zumindest für mich überflüssig) überspringen und nur die Zeilenanzahl vom Ende der Datei lesen, die ich lesen möchte.
Offensichtliche Antwort ist, manuell nur N Menge von Zeilen aus der Datei in eine andere Datei kopieren, aber gibt es eine Möglichkeit, dies halbautomatisch zu tun, nur um die Anzahl der Zeilen von dem Ende der Datei mit Python zu lesen ?
Welches Betriebssystem verwenden Sie? –
Keine direkte Antwort, aber wenn Sie nix verwenden, könnten Sie stattdessen die Eingabe von stdin akzeptieren und die Daten einfach mit 'tail riangilefile.txt -n1000 | senden python myprog.py' – moopet
Siehe die Antworten auf die doppelte Frage. Der erste ist relativ plattformunabhängig, der zweite funktioniert gut auf UNIX-basierten Systemen (mit dem Befehl "tail" wie @moopet vorgeschlagen). –