maneira portátil de escrever arquivo csv em python 2 ou python 3

Na minha caixa do Windows, geralmente fazia isso no python 2 para escrever um arquivo csv:

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

Agora que o python 3 proíbe escrever arquivos de texto como binários, esse trecho de código não funciona mais. Isso funciona:

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

O problema é:newline O parâmetro é desconhecido para o Python 2.

Obviamente, omitir a nova linha resulta em um arquivo csv com muitos\r caracteres, então não é aceitável.

Atualmente, estou executando um processo compatível com versões anteriores para migrar progressivamente do python 2 para o python 3.5. Existem muitas dessas instruções em todos os meus módulos.

Minha solução foi incorporar o código em um módulo personalizado, e o módulo personalizado retorna o objeto manipulador de arquivos + gravador. Uma verificação da versão do python é feita dentro do módulo, o que permite que qualquer módulo que use o meu módulo funcione com qualquer versão do python sem muita invasão.

Existe uma maneira melhor?

questionAnswers(2)

yourAnswerToTheQuestion