Wenn ich auf Windows csv.DictWriter.writerows
von Python verwende, werden leere Zeilenumbrüche zwischen den Zeilen hinzugefügt. Wie kann ich das stoppen? Der Code funktioniert einwandfrei unter Linux.
Antwort
Zu viele Anzeigen?-
In Python 2: Öffnen Sie die Datei immer im Binärmodus;
csv.DictWriter()
schreibt\r\n
Zeilenumbrüche:with open(filename, 'ab') as outputfile: writer = csv.DictWriter(outputfile, fieldnames)
Von der
csv.writer()
Dokumentation:Wenn csvfile ein Dateiobjekt ist, muss es auf Plattformen, auf denen dies einen Unterschied macht, mit der 'b'-Flagge geöffnet werden.
-
In Python 3: Öffnen Sie die Datei mit
newline=''
, damitcsv.DictWriter()
die geschriebenen Zeilenenden ohne Übersetzung steuern kann:with open(filename, 'a', newline='') as outputfile: writer = csv.DictWriter(outputfile, fieldnames)
Erneut, unter Berufung auf die relevante
csv.writer()
Dokumentation:Wenn csvfile ein Dateiobjekt ist, sollte es mit
newline=''
geöffnet werden[ ... ]
Wenn nicht
newline=''
angegeben ist, werden eingebettete Zeilenumbrüche innerhalb von in Anführungszeichen gesetzten Feldern nicht korrekt interpretiert und auf Plattformen, die\r\n
Zeilenumbrüche beim Schreiben verwenden, wird ein zusätzliches\r
hinzugefügt. Es sollte immer sicher sein,newline=''
anzugeben, da das csv-Modul seine eigene (universelle) Zeilenumbruchbehandlung durchführt.