Ich habe eine Python-Codebasis, die für Python 3 erstellt wurde und den Python 3-Stil open () mit dem Codierungsparameter verwendet:
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
Jetzt möchte ich diesen Code auf Python 2.x zurückportieren, damit ich eine Codebasis habe, die mit Python 2 und Python 3 funktioniert.
Was ist die empfohlene Strategie, um open()
Unterschiede und fehlende Codierungsparameter zu umgehen?
Könnte ich einen open()
Dateihandler im Python 3- Stil haben, der Bytestrings streamt, sodass er sich wie Python 2 verhält open()
?
quelle
Meiner Ansicht nach
sollte tun.
quelle
from io import open
in Python 3 verwende? Die Leistung ist mir derzeit egal.Hier ist eine Möglichkeit:
quelle
f
Dies kann den Trick tun:
Dann können Sie Ihren Code auf python3-Weise behalten.
Beachten Sie, dass einige APIs wie
newline
,closefd
,opener
funktionieren nichtquelle
pass
.Wenn Sie verwenden
six
, können Sie dies versuchen, indem Sie die neueste Python 3-API verwenden und in beiden Python 2/3 ausführen:Und die Aufgabe der Python 2-Unterstützung löscht nur alles, was damit zu tun hat
six
.quelle