J'ai une base de code Python, construite pour Python 3, qui utilise le style Python 3 open () avec le paramètre d'encodage:
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
Maintenant, j'aimerais rétroporter ce code vers Python 2.x, afin d'avoir une base de code qui fonctionne avec Python 2 et Python 3.
Quelle est la stratégie recommandée pour contourner les open()
différences et l'absence de paramètre d'encodage?
Puis-je avoir un open()
gestionnaire de fichiers de style Python 3 qui diffuse des chaînes d'octets, pour qu'il agisse comme Python 2 open()
?
la source
je pense
devrait faire.
la source
from io import open
Python 3? Je n'aime pas les performances actuellement.Voici une façon:
la source
f
Cela peut faire l'affaire:
Ensuite, vous pouvez garder votre code de la manière python3.
Notez que certaines API aiment
newline
,closefd
,opener
ne fonctionnent pasla source
pass
.Si vous utilisez
six
, vous pouvez essayer ceci, en utilisant la dernière API Python 3 et en exécutant à la fois Python 2/3:Et, l'abandon de la prise en charge de Python 2 consiste simplement à supprimer tout ce qui est lié à
six
.la source