портативный способ записи CSV-файла в Python 2 или Python 3

На моем компьютере с Windows я обычно делал это в python 2, чтобы написать файл csv:

import csv
f = open("out.csv","wb")
cr = csv.writer(f,delimiter=';')
cr.writerow(["a","b","c"])
f.close()

Теперь, когда Python 3 запрещает запись текстовых файлов в двоичном формате, этот фрагмент кода больше не работает. Это работает:

import csv
f = open("out.csv","w",newline='')
cr = csv.writer(f,delimiter=';')
cr.writerow(["a","b","c"])
f.close()

Проблема в следующем:newline параметр неизвестен Python 2.

Конечно, пропуск новой строки приводит к CSV-файлу со слишком большим количеством\r символы, поэтому не приемлемо.

В настоящее время я выполняю процесс обратной совместимости для постепенного перехода с python 2 на python 3.5. Во всех моих модулях есть много таких утверждений.

Мое решение заключалось в встраивании кода в пользовательский модуль, и пользовательский модуль возвращает обработчик файла + объект записи. Внутри модуля выполняется проверка версии Python, что позволяет любому модулю, использующему мой модуль, работать с любой версией Python без особого взлома.

Есть ли способ лучше?

Ответы на вопрос(2)

Ваш ответ на вопрос