2016-06-15 7 views
-1

Das untenstehende Problem wurde vorübergehend behoben. Ich habe herausgefunden, dass die Eingabedatei (csv) Sonderzeichen (z. B. Aimí ©) hat, die zu dem Fehler führten. Ich ändere jetzt manuell die Charaktere (z. B. Aimí © -> Aime).self.encoding_errors & I/O-Vorgang bei geschlossener Datei

Vorherige Frage:

ich unicodecsv verwende, während in eine CSV-Datei zu schreiben. Mein Programm lief reibungslos, bis ich den folgenden Fehler fand. Könnte jemand helfen?

Code:

import unicodecsv as csv 
output_csv_write = open(csv_file_name_write,'w') 
csv_file_write = csv.writer(output_csv_write, encoding='utf-8') 
csv_file_write.writerow([An array of info]) 

Erster Fehler:

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 3-4: unexpected end of data 

Nach dem obigen Fehler zu sehen, ich versuche durch zu debuggen ausgeführt wird:

csv_file_write.writerow(['A','B','C']) 

und ich erhielt den zweiten Fehler als unten:

 84  def writerow(self, row): 
    85   return self.writer.writerow(
---> 86     _stringify_list(row, self.encoding, self.encoding_errors)) 
    87 
    88  def writerows(self, rows): 

ValueError: I/O operation on closed file 
+0

Ich bekomme diesen Fehler nicht in Python 2.7.6, Unicodecsv 0.14.1. –

+0

@ Robᵩ Meine Entschuldigung. Ich habe gerade gemerkt, dass es passiert ist, nachdem ich auf ein anderes Problem gestoßen bin. Ich ändere meine Frage, um mehr Details zur Verfügung zu stellen. –

+2

Bitte geben Sie das kürzeste ** vollständige ** Programm an, das den Fehler anzeigt, den Sie haben. Da der Fehler datenabhängig ist, fügen Sie bitte einen kurzen Beispielsatz ein, der den Fehler verursacht. Siehe [mcve] für weitere Informationen. –

Antwort

1

Versuchen Sie Folgendes:

import unicodecsv as csv 

with open(csv_file_name_write, "wb") as f: 
    writer = csv.writer(f, encoding="utf-8") 
    writer.writerow(["A", "B", "C"]) 

Wenn das Problem nicht lösen, leider kann ich Ihnen nicht helfen, weil diese auf meiner Maschine arbeitet.

+0

Mein ursprünglichen Fehler war "UnicodeDecodeError: 'utf8' Codec kann Bytes in Position 3-4 nicht decodieren: unerwartetes Ende der Daten " –

+1

" decode "?? Das Beispiel ist nur Codierung. Sind Sie sicher, dass dies tatsächlich die Ursache Ihres Problems ist? –