Hinweis auf Probleme hinsichtlich der Koexistenz des Python 2/3-Systems

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.

Das Argument der Standard-Open-Funktion in Python 2.7 enthält keine Codierung

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

Hinweis auf Probleme hinsichtlich der Koexistenz des Python 2/3-Systems
[Python] Memo über Funktionen
Über verschiedene Codierungen von Python 3
Über die Funktionen von Python
[Python] Operationsnotiz von Pandas DataFrame
"Python Startbook" Python3-kompatibles Memo
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
Separate Python-Diagramme (Memo)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Informationen zur Grundlagenliste der Python-Grundlagen
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Informationen zum Erstellen einer GUI mit TKinter of Python
[Lernnotiz] Grundlagen des Unterrichts mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
"Systemhandel beginnt mit Python3" Lesememo
Memorandum von Python-Anfängern
Grundlegende Grammatik der Python3-Reihe (Zeichenkette)
[Python] Kapitel 02-04 Grundlagen des Python-Programms (Informationen zu Kommentaren)
Grundlegende Grammatik des Python3-Systems (inklusive Notation)
Status jedes Python-Verarbeitungssystems im Jahr 2020
Über Python-Slices
Ein Memo, das ein Tutorial zum Ausführen von Python auf Heroku erstellt hat
Über die Einschlussnotation von Python
Python-Anfänger-Memo (9.2-10)
Über Python tqdm.
Über die Python-Ausbeute
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Über Python, Klasse
Python-Anfänger-Memo (9.1)
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Ein Memo, das ich in Python zusammengeführt habe
Informationen zur Python-Vererbung
Python-Grundlagen ①
★ Memo ★ Python Iroha
Grundlagen von Python ①
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Über Python, range ()
[Python] EDA-Memo
Über Python Decorator
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Python3-Metaklassen-Memo
[Python] Grundkarten-Memo
Informationen zur Python-Referenz
Über Python-Dekorateure
[Python] Über Multi-Prozess
Über flache und tiefe Kopien von Python / Ruby
Python-Anfänger-Memo (2)
[Python] Numpy Memo
Einführung von Python
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Implementierungsbeispiel eines einfachen LISP-Verarbeitungssystems (Python-Version)
Memo mit Python mit HiveServer2 von EMR verbunden
Der Schmerz von gRPC mit Python. November 2019. (Persönliches Memo)
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker