portable Möglichkeit, eine CSV-Datei in Python 2 oder Python 3 zu schreiben
Auf meiner Windows-Box habe ich normalerweise in Python 2 eine CSV-Datei geschrieben:
import csv
f = open("out.csv","wb")
cr = csv.writer(f,delimiter=';')
cr.writerow(["a","b","c"])
f.close()
Nun, da Python 3 das Schreiben von Textdateien als Binärdatei verbietet, funktioniert dieser Code nicht mehr. Das funktioniert
import csv
f = open("out.csv","w",newline='')
cr = csv.writer(f,delimiter=';')
cr.writerow(["a","b","c"])
f.close()
Das Problem ist:newline
-Parameter ist Python 2 unbekannt.
Natürlich führt das Weglassen des Zeilenumbruchs zu einer CSV-Datei mit zu vielen\r
Zeichen, also nicht akzeptabel.
Ich führe derzeit einen abwärtskompatiblen Prozess durch, um schrittweise von Python 2 auf Python 3.5 zu migrieren. In all meinen Modulen sind viele dieser Anweisungen enthalten.
Meine Lösung hat den Code in ein benutzerdefiniertes Modul eingebettet, und das benutzerdefinierte Modul gibt das File-Handler + Writer-Objekt zurück. Innerhalb des Moduls wird eine Python-Versionsprüfung durchgeführt, mit der jedes Modul, das mein Modul verwendet, mit jeder Python-Version arbeiten kann, ohne zu viel hacken zu müssen.
Gibt es einen besseren Weg?