2017-06-21 3 views
1

Ich speichere Tausende von Zeitreihen in .csv Dateien auf einem Netzlaufwerk. Bevor ich die Dateien aktualisiere, erhalte ich zuerst die letzte Zeile der Datei, um den Zeitstempel zu sehen, und dann aktualisiere ich mit Daten nach diesem Zeitstempel. Wie kann ich schnell die letzte Zeile einer .csv Datei über ein Netzlaufwerk erhalten, so dass ich nicht die gesamte große .csv Datei laden muss, nur um die letzte Zeile zu verwenden?Wie schnell die letzte Zeile aus einer CSV-Datei über ein Netzlaufwerk abgerufen werden?

+1

fand ich die Antwort [hier] (https://stackoverflow.com/a/37551666/1367204) – user1367204

Antwort

1

Es ist ein raffiniertes reversed Werkzeug dafür, vorausgesetzt, Sie die eingebauten in csv Modul verwenden:

how to read a csv file in reverse order in python

Kurz:

import csv 
with open('some_file.csv', 'r') as f: 
    for row in reversed(list(csv.reader(f))): 
     print(', '.join(row)) 

In meiner Test-Datei:

1: test, 1 
2: test, 2 
3: test, 3 

Diese Ausgänge:

test, 3 
test, 2 
test, 1 
+0

ich so das Gefühl, noch die gesamte Datei in den Speicher gelesen, während das, was ich brauche nur zu lesen ist die letzte Zeile in den Speicher, so dass es keine Zeit verschwendet, unnötige Dinge in den Speicher zu lesen. – user1367204

+0

Sie könnten versuchen, expliziter zu sein, ohne jede Zeile durch Indizierung zu durchlaufen: 'print (',' .join (reversed (Liste (csv.reader (f)) [- 1])))' Ich bin mir sicher ist ein besserer Weg, es zu tun, aber das ist, was mir in den Sinn kommt ... – Doug

+0

Ich habe das gerade getestet und es war die gleiche Menge an Zeit = ( – user1367204

Verwandte Themen