Python 2.x-> Python 3.x Ich füge manchmal einige Probleme beim Schreiben von Migrations- und Kompatibilitätscode als fast meine eigenen Notizen hinzu.
Die Codierung des Arguments der Funktion open kann in der Python 3-Serie verwendet werden, nicht jedoch in der Python 2-Serie.
python
# OK on Python 3.x, NG on Python 2.7
with open("some_file_with_multibyte_char", "r", encoding="utf-8") as f:
print(f.read())
Um dasselbe mit der Python 2-Serie zu tun, öffnen Sie die Datei im Binärmodus und dekodieren Sie den Inhalt oder
python
# OK on Python 2.7 and OK on Python 3.x
with open("some_file_with_multibyte_char", "rb") as f:
print(f.read().decode(encoding="utf-8"))
Verwenden Sie open of the io module?
python
from io import open
# OK on both Python 3.x and Python 2.7
with open("some_file_with_multibyte_char", "r", encoding="utf-8") as f:
print(f.read())
In Python 3.x ist io.open ein Alias für das integrierte Öffnen. Daher scheint es besser, io.open in der Python 2-Serie zu verwenden.
Nachtrag:
codecs.offen ist auch Python 2/Wir haben einen Kommentar erhalten, dass es mit 3 kompatibel ist. Vielen Dank.
#### **`python`**
```python
import codecs
# OK on both Python 3.x and Python 2.7
with codecs.open('some_file_with_multibyte_char', 'r', 'utf-8') as f:
print(f.read())
Recommended Posts