5 Stimmen

Wie kann ich verhindern, dass csv.DictWriter.writerows von Python in Windows leere Zeilen zwischen den Zeilen hinzufügt?

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.

16voto

Martijn Pieters Punkte 953257
  • 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='', damit csv.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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X