Eu tenho uma base de código Python, criada para o Python 3, que usa o estilo Python 3 open () com o parâmetro de codificação:
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
Agora eu gostaria de portar esse código no Python 2.x, para ter uma base de código que funcione com o Python 2 e o Python 3.
Qual é a estratégia recomendada para solucionar as open()
diferenças e a falta de parâmetro de codificação?
Eu poderia ter um open()
manipulador de arquivos no estilo Python 3 que transmita bytestrings, para que funcionasse como o Python 2 open()
?
fonte
eu acho que
deveria fazer.
fonte
from io import open
no Python 3? Eu não ligo para desempenho atualmente.Aqui está uma maneira:
fonte
f
Isso pode fazer o truque:
Então você pode manter o código da maneira python3.
Note-se que algumas APIs gosto
newline
,closefd
,opener
não funcionamfonte
pass
.Se você estiver usando
six
, você pode tentar fazer isso utilizando a API mais recente do Python 3 e executar no Python 2/3:E o abandono do suporte ao Python 2 está apenas excluindo tudo relacionado a
six
.fonte