2016-08-02 4 views
-4

Ich habe eine CSV-Datei auf einem Linux-Server, der neue Zeilen in zufälligen Zeiten angehängt hat (kann alle 1 Sekunde sein und kann 2 Stunden ohne neue Zeilen sein). Die Datei sieht wie folgt aus:Neue angehängte Zeilen überwachen und a; getrennte Datei für jede Zeile

KEY PREDICTION FIRST NAME LAST NAME 
aaaaaa 0   john doe 
bbbbbb 1   jane doe 
cccccc 1   michael michael 
dddddd 0   roger rabit 

kann sagen, das sind 4 neue Zeilen, die an die Datei angehängt wurden - sobald die Änderung der Zeilen aufgetreten ich die neuen N Zeilen nehmen müssen und erstellen N Doppelpunkt getrennte Dateien, in denen Der Schlüssel ist der Name der Datei und der Inhalt besteht aus allen 4 Spalten. Auch der Speicherort dieser neuen Dateien sollte konfigurierbar sein. Wer schlägt einen effizienten Weg vor? sowohl die Echtzeitüberwachung als auch die Dateiaufteilung.

+2

Bitte fügen Sie den Code, den Sie versucht haben, wenn es welche gibt. Und lies bitte die [Stackoverflow-Hilfe] (http://stackoverflow.com/help/mcve), um bessere Fragen zu schreiben. – Sevanteri

+1

Wenn Sie nicht einmal wissen, wo Sie mit diesem Problem anfangen sollen, dann zeigen Sie uns wenigstens, welche Forschung Sie gemacht haben, und weisen Sie genau darauf hin, welche Konzepte oder Techniken Sie nicht verstehen. – skrrgwasme

Antwort

0

Ich würde empfehlen, Blick auf David's generator tricks from python. Ein Beispielprogramm, das Ihr Ziel erreichen würde, wäre so etwas wie:

import time 
import csv 
def follow(thefile): 
    thefile.seek(0,2) 
    while True: 
     line = thefile.readline() 
     if not line: 
      time.sleep(0.1) 
      continue 
     yield line 

if __name__ == '__main__': 
    logfile = open("run/foo/access-log","r") 
    loglines = follow(logfile) 
    for line in loglines: 
     z = line.split(",") # if it is comma separated, change delimiter if required 
     with open("/path/to/csv/"+z[0]+".csv",'wb') as f: 
      wr = csv.writer(f,delimiter = ";") 
      wr.writerow(z[1:])