2017-09-13 6 views
1

Ich schreibe ein einfaches Skript mit Python3.6 und benutze das CSV-Modul, um eine CSV-Datei zu erstellen. Mein Code ist unten angehängt und ist eine Kopie mehrerer Beispiele, die ich online gefunden habe, aber wenn ich den Code ausführe, erhalte ich die Fehlermeldung TypeError: a bytes-like object is required, not a 'str'.Wie schreibe ich in eine .csv-Datei mit Python

import csv 
File_Name = Test.csv 
with open(File_Name, 'wb') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter = writerow(['Paul','Mary']) 
+0

Verwendung sollte 'mit Öffnen (Dateiname, 'w') als csvfile' – ettanany

+2

woher kommt 'writerow'? Sie überschreiben 'filewriter' –

+0

In Python 3.x ist die richtige Art, die csv-Datei zum Schreiben zu öffnen,' open (Datei_Name, 'w', newline = '') als csvfile: 'wie in den Beispielen in der [Dokumentation.] (https://docs.python.org/3/library/csv.html#csv.writer). Sie müssen auch 'filewriter.writerow (['Paul', 'Mary'])' 'verwenden. – martineau

Antwort

2

Wenn Sie nicht über die Binär-Modus benötigen, können Sie diese verwenden:

with open(File_Name, 'w') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter.writerow(['Paul','Mary']) 

Überprüfen Sie die Tabelle here um Details zu den verschiedenen Modi zur Verfügung.

1

Die Sache ist, dass Sie Datei in einem binären Modus

with open(File_Name, 'wb') as csvfile: 

Das bedeutet, dass alle Daten, die aus der Datei zurückgegeben werden als Objekte Bytes, nicht str geöffnet werden. Wenn Sie es nicht brauchen, versuchen:

with open(File_Name, 'w') as csvfile: 

Auch sollten Sie writerow Methode des csvwriter verwenden, anstatt es zuweisen:

file_writer.writerow(['Paul','Mary']) 
3

Die csvwriter Instanz nicht neu zugewiesen werden sollen. Es sollte verwendet werden, um die Zeilen zu schreiben. In Python 3 sollten Sie die Datei im Nur-Schreib-Modus mit newline='' per documentation öffnen.

import csv 

filename = 'Test.csv' 

with open(filename, 'w', newline='') as csvfile: 
    file_writer = csv.writer(csvfile,delimiter=',') 
    file_writer.writerow(['Paul','Mary']) 
2

Sie müssen sich ändern von 'wb' auf 'w' und den Dateinamen in Anführungszeichen ("Test.csv" oder 'Test.csv') siehe unten

import csv 
File_Name = "Test.csv" 
with open(File_Name, 'w') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter.writerow(['Paul','Mary']) 
Verwandte Themen