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?