2016-04-01 8 views
1

Ich versuche, die letzte Zeile aus einer CSV-Datei nach dem Lesen zu entfernen, Python 2.7, aber mein Code funktioniert nicht .. Jeder kann helfen ??Letzte Zeile von einem CSV entfernen

with open('eggs.csv', 'rb') as f: 
    last_timestamp = f.readlines()[-1].split(",")[0] 
    f.writerow()[-1] 

Thannks !!

+0

Ein Problem, das Sie haben, ist, dass die Datei in rb geöffnet ist, nicht zum Schreiben. – PyNEwbie

Antwort

1

Wenn Sie mit einer CSV-Datei die beste Lösung arbeiten, ist das richtige Werkzeug

import csv 

with open('eggs.csv','rb') as fh: 
    mylist = [] 
    myreader = csv.DictReader(fh) 
    headers = myreader.fieldnames 
    for row in myreader: 
     mylist.append(row) 

So zu verwenden, was Sie haben, ist eine Liste, in der jedes Element ein Wörterbuch ist. Der Schlüssel zum Wörterbuch ist die Spaltenüberschrift und der Wert der Zeilenwert für die Spalte

nun die letzte Zeile zu löschen:

mylist = mylist[0:-1] 

, und dann aus zu schreiben zurück

outref = open('eggs.csv','wb') 
mywriter = csv.DictWriter(outref, fieldnames = headers) 
headerdict = dict((col,col) for col in headers) # create a dict with col headings) 
mywriter.writerow(headerdict) #writeout the column headings first 
mywriter.writerows(mylist) #write the data 
outref.close()