2015-02-02 14 views
9

Ich habe den folgenden Quellcode, wo ich versuche, eine Liste in einer CSV-Datei zu schreiben. Ich brauche jede neue Liste in einer neuen Zeile dieser CSV-Datei geschrieben werden. Der Quellcode ist die folgende:Schreibe eine Liste in eine Python-CSV-Datei, eine neue Zeile pro Liste

import csv 
list1=[55,100,'dir1/dir2/dir3/file.txt',0.8] 

resultFile = open("output.csv",'wa') 
wr = csv.writer(resultFile, dialect='excel') 
wr.writerow(list1) 
resultFile.close() 

Das Problem ist, dass es nicht in einer neuen Zeile einfügt list1 jedes Mal, wenn ich den Code ausführen.

In Matlab, das wäre einfach, ich brauche nur dlmwrite mit '-append' Parameter.

Aber wie geht das in Python?

+3

Schließen Sie() 'Ihre Datei am Ende –

+3

Alternativ verwenden Sie' mit öffnen ('output.csv', 'wa') als Ergebnisdatei: ' – meshy

+0

@BhargavRao Ich habe vergessen, den Teil des Codes, die ich schließe die Datei. Ich habe es aktualisiert. Funktioniert immer noch nicht. Ich habe den obigen Code aktualisiert. – mad

Antwort

19

Datei im Append-Modus öffnen.

import csv 
list1=[58,100,'dir1/dir2/dir3/file.txt',0.8] 

with open("output.csv", "a") as fp: 
    wr = csv.writer(fp, dialect='excel') 
    wr.writerow(list1) 

Mehr auf Datei open modes

Versuch folgendes: -

>>> with open('test1','wb') as f: f.write('test') 
... 
>>> with open('test1','ab') as f: f.write('koko') 
... 
>>> with open('test1','rb') as f: f.read() 
... 
'testkoko' 
>>> with open('test1','wa') as f: f.write('coco') 
... 
>>> with open('test1','rb') as f: f.read() 
... 
'coco' 
>>> 

Von diesem link

Modi: Beschreibung

  1. r: öffnet eine Datei nur zum Lesen. Der Dateizeiger befindet sich am Anfang der Datei. Dies ist der Standardmodus.
  2. rb: Öffnet eine Datei zum Lesen nur im Binärformat. Der Dateizeiger befindet sich am Anfang der Datei. Dies ist der Standardmodus.
  3. r +: Öffnet eine Datei zum Lesen und Schreiben. Der Dateizeiger befindet sich am Anfang der Datei.
  4. rb +: Öffnet eine Datei zum Lesen und Schreiben im Binärformat. Der Dateizeiger befindet sich am Anfang der Datei.
  5. w: Öffnet eine Datei nur zum Schreiben. Überschreibt die Datei, wenn die Datei existiert. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Schreiben.
  6. wb: Öffnet eine Datei zum Schreiben nur im Binärformat. Überschreibt die Datei, wenn die Datei existiert. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Schreiben.
  7. w +: Öffnet eine Datei zum Schreiben und Lesen. Überschreibt die vorhandene Datei, wenn die Datei existiert. Wenn die Datei nicht existiert, wird eine neue Datei zum Lesen und Schreiben erstellt.
  8. wb +: Öffnet eine Datei zum Schreiben und Lesen im Binärformat. Überschreibt die vorhandene Datei, wenn die Datei existiert. Wenn die Datei nicht existiert, wird eine neue Datei zum Lesen und Schreiben erstellt.
  9. a: Öffnet eine Datei zum Anhängen. Der Dateizeiger befindet sich am Ende der Datei, wenn die Datei existiert. Das heißt, die Datei befindet sich im Append-Modus. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Schreiben.
  10. ab: Öffnet eine Datei zum Anhängen im Binärformat. Der Dateizeiger befindet sich am Ende der Datei, wenn die Datei existiert. Das heißt, die Datei befindet sich im Append-Modus. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Schreiben.
  11. a +: Öffnet eine Datei zum Anhängen und Lesen. Der Dateizeiger befindet sich am Ende der Datei, wenn die Datei existiert. Die Datei wird im Append-Modus geöffnet. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Lesen und Schreiben.
  12. ab +: Öffnet eine Datei zum Anhängen und Lesen im Binärformat. Der Dateizeiger befindet sich am Ende der Datei, wenn die Datei existiert. Die Datei wird im Append-Modus geöffnet. Wenn die Datei nicht existiert, erstellt sie eine neue Datei zum Lesen und Schreiben.
+0

Es funktioniert, danke. Ich schätze wirklich, dass ich das vorher gemacht habe und nicht gearbeitet habe. Danke trotzdem. – mad

+0

Außerdem muss die Datei mit dem Flag "b" auf Plattformen geöffnet werden, wo dies einen Unterschied macht, wie in der Dokumentation zu ['csv.writer'] (https://docs.python.org/2/library/csv) erwähnt .html # csv.writer). –

+0

@CristianCiupitu Ich habe versucht, Ihren Code, aber es schreibt jede neue Zeile nicht in der Zeile darunter, sondern in zwei unter. Damit habe ich am Ende immer eine leere Zeile zwischen zwei Zeilen mit Daten. Wie kann ich es reparieren? –

0

Wenn Sie Python 3.x dann Ihren Code ändern:

import csv 

list1 = [58,100,'dir1/dir2/dir3/file.txt',0.8] 

with open("output.csv", "a", newline='') as fp: 
    wr = csv.writer(fp, dialect='excel') 
    wr.writerow(list1) 

Hinzufügen newline='' können Sie Hilfe, zusätzliche neue Linien, leere Zeilen mit Daten zwischen zwei Reihen zu vermeiden.

Verwandte Themen