Viele Text-Kodierungen haben die Eigenschaft, dass Sie kodierten Text rückwärts durchlaufen können und immer noch in der Lage sein, es zu entschlüsseln. ASCII, UTF-8, UTF-16 und UTF-32 haben alle diese Eigenschaft. So können Sie beispielsweise die letzte Zeile einer Datei lesen, ohne alle Zeilen davor zu lesen, oder einige Zeilen von Ihrer aktuellen Position in einer Datei zurückgehen.Unicode-Text rückwärts dekodieren
Leider scheint Python mit keiner Möglichkeit zu kommen, eine Datei rückwärts zu dekodieren. Sie können nicht read
rückwärts oder seek
nach Zeichenanzahl in einer codierten Datei. Die Decoder im Modul codecs
unterstützen die inkrementelle Dekodierung weiterleiten, aber nicht rückwärts. Es scheint keinen "UTF-8-rückwärts" -Codec zu geben, ich könnte UTF-8-Bytes in umgekehrter Reihenfolge einspeisen.
Ich könnte wahrscheinlich die Codec-abhängige Zeichengrenze Synchronisation selbst implementieren, binäre Stücke rückwärts lesen, und richtig ausgerichtete Chunks zu entsprechenden Decodern aus dem codecs
-Modul, aber das klingt wie die Art, wo ein Nicht-Experte würde würde vermisse einige subtile Details und merke nicht, dass die Ausgabe falsch ist.
Gibt es eine einfache Möglichkeit, Text in Python mit vorhandenen Tools rückwärts zu dekodieren?
Einige Leute scheinen den Punkt verpasst zu haben, dass die gesamte Datei zu lesen, dies zu tun Niederlagen der Zweck. Während ich die Dinge klärt, könnte ich auch hinzufügen, dass dies für die Codierung mit variabler Länge auch funktionieren muss. UTF-8-Unterstützung ist ein Muss.
Mögliche Duplikat [Lesen einer Datei in umgekehrter Reihenfolge mit Python] (http : //stackoverflow.com/questions/2301789/read-a-file-in-reverse-order-using-python) – gravity
@gravity: Das liest die gesamte Datei. Ich versuche speziell, das nicht zu tun. – user2357112
Dort gibt es eine spezifische Community-Wiki-Antwort, die das Lesen in Chunks beinhaltet. Bitte werfen Sie einen Blick auf diesen direkten Link: http://stackoverflow.com/questions/260273/most-efficient-way-to-search-the-last-x-lines-of-a-file-in-python/260433 # 260433 – gravity