CSVWriter nicht speichern, Daten in Datei moment ich Schreibe es
Python-Neuling und immer ein wenig frustriert mit dem csv-Modul. Bei diesem Tempo, wäre es leichter gewesen, wenn ich schrieb, die Datei-parser mich, aber ich möchte Dinge tun, die Pythonic way ....
Ich geschrieben habe ein kleines python-Skript zu speichern, sollten meine Daten in eine CSV-Datei.
Hier ist ein Ausschnitt von meinem code:
import csv
wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')
for row in rows:
wrtr.writerow([row.field1,row.field2,row.field3])
Die Datei myfile.csv ist erfolgreich erstellt, noch ist es leer - aber hat eine Sperre auf Sie, als seine noch von der Python-Prozess. Es scheint, dass die Daten in die Datei geschrieben wurden, in der Erinnerung, aber es wurde noch nicht auf den Datenträger geleert.
Seit der Python-Prozess eine Sperre auf die Datei, dann nehme ich an, dass ich verantwortlich bin für die Freigabe der Sperre. Hier sind meine Fragen:
- Wie bekomme ich python auf dem Datenträger zu leeren
- Wie schließe ich die Datei, die geöffnet wurde, die in der csv-Datei.writer () - Methode?
- """wäre es leichter gewesen, wenn ich schrieb, die Datei-parser selbst""" -- I ' ll Datei, die unter "berühmte Letzte Worte".
- Die wichtigste intuition ist, dass der Datei-handle ist immer noch geöffnet, nachdem Sie schreiben in die csv-writer. Wenn Sie entfernen die "öffnen" rufen Sie außerhalb und verwalten einer separaten Datei-handle, welches Sie passieren in csv.writer(csvFile,...) dann kann man schließen, dass die Datei-handle, wenn Sie fertig sind, und es wäre bündig. Die Antwort von Tim erklärt einige gute Möglichkeiten, dies zu tun.
- csvwriter fehlt, ist ein flush-Methode, das ist ein versehen.
- Ich habe gesehen, es gibt eine
file.synch()
Methode. Ich Frage mich, wie andereflush
Befehl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
oder
Die nette Sache über den ersten Ansatz ist, dass Ihre Datei wird auch automatisch richtig geschlossen, im Fall einer Ausnahme.
Wenn Sie möchten, dass Ihre Datei-Objekt anonym zu sein, dann wird es nur geschlossen werden, wenn das Programm beendet wird. Wann oder ob es geleert wird, hängt von der OS - so könnte es nie bis exit (beenden).
flush()
in jedem Iterationsschritt, wenn es nicht erforderlich ist, überwachen Sie den Inhalt der Datei während der itrationfor row in rows
.file.sync()
Funktion. Unterscheidet sich das von der Spülung? Ich bin ein bisschen verwirrt in diesem Punkt.Den
flush()
undclose()
Methoden der file-Objekt. Oder verwenden Siewith
.