2016-05-13 10 views
0

Ich habe die folgende Situation: Ich schreibe eine CSV-Textdatei und ich kann die darauf geschriebenen Daten nicht verlieren.Datei bei jedem Schreiben speichern

In Situationen wie dem Folgenden verliere ich jedoch alles, was ich geschrieben habe, bis zur vierten Iteration.

Wie könnte ich die Daten in die Textdatei schreiben, die für jeden Ausführungsschreiber geschrieben wurden?

+1

Was passiert, wenn Sie (http://stackoverflow.com/questions/3167494/how-often-does-python-flush-to-a-file) für die Datei [die Puffergröße konfigurieren] (drehen aus Pufferung)? –

+0

@ DanMašek Gelöst. Ich kannte diesen Parameter nicht. Ich habe 'buffering = 1' verwendet. Vielen Dank. Wenn möglich, beantworte die Frage, also markiere ich sie als gelöst. – Macabeus

+0

eine Datei flush jedes Mal nach writerow(). es wird Ihre Anwendung verlangsamen und garantiert keine Synchronisierung, die tatsächlich auf die Festplatte zurückschreiben, aber kann Ihnen etwas helfen – DAG

Antwort

0

Warum erhöhen Sie einen ValueError innerhalb der for-Schleife? Wäre es nicht viel einfacher, einfach aus der for-Schleife auszusteigen/die Datei zu schließen und dann den ValueError zu erhöhen? Wenn Sie jedoch die Exception innerhalb der for-Schleife auslösen müssen, warum nicht einen Context-Manager verwenden?

import csv 
import time 

with open('result.csv', 'w') as file_reference: 
    file_csv = csv.writer(file_reference, delimiter=';', quoting=csv.QUOTE_MINIMAL) 

    for i in range(50): 
     file_csv.writerow([i]) 
     time.sleep(1) 
     print('...') 

     if i == 4: 
      raise ValueError('foo') 

    file_reference.close() 
Verwandte Themen