Note de problèmes sur la coexistence du système Python 2/3

Python 2.x-> Python 3.x J'ajoute parfois quelques problèmes dans l'écriture du code de migration et de compatibilité comme presque mes propres notes.

Il n'y a pas d'encodage dans l'argument de la fonction ouverte standard en Python 2.7

L'encodage de l'argument de la fonction open peut être utilisé dans la série Python 3, mais il ne l'est pas dans la série Python 2.

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())

Pour faire de même avec la série Python 2, ouvrez le fichier en mode binaire et décodez le contenu, ou

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"))

Utilisez-vous open du module io?

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())

Dans Python 3.x, io.open est un alias pour open intégré, il semble donc préférable d'utiliser io.open dans la série Python 2.

Post-scriptum:

codecs.open est aussi Python 2/Nous avons reçu un commentaire indiquant qu'il est compatible avec 3. Merci beaucoup.




#### **`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

Note de problèmes sur la coexistence du système Python 2/3
[Python] Mémo sur les fonctions
À propos de divers encodages de Python 3
À propos des fonctionnalités de Python
[Python] Mémo d'opération de pandas DataFrame
"Python startbook" mémo compatible python3
Grammaire de base du système Python3 (dictionnaire)
Graphiques Python séparés (mémo)
Coexistence de Python2 et 3 avec CircleCI (1.0)
À propos de la liste de base des bases de Python
mémo python
Mémo Python
mémo python
Mémo Python
À propos de la création de l'interface graphique à l'aide de TKinter de Python
[Mémo d'apprentissage] Bases de la classe par python
À propos de l'environnement virtuel de Python version 3.7
"Commerce du système à partir de Python3" lecture du mémo
Mémorandum des débutants en python
Grammaire de base de la série Python3 (chaîne de caractères)
[Python] Chapitre 02-04 Bases du programme Python (À propos des commentaires)
Grammaire de base du système Python3 (notation incluse)
Statut de chaque système de traitement Python en 2020
À propos des tranches Python
Un mémo qui a fait un tutoriel pour exécuter python sur heroku
[Python] Mémo sur le dictionnaire
À propos de la notation d'inclusion de python
mémo débutant python (9.2-10)
À propos de Python tqdm.
À propos du rendement Python
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
À propos de python, classe
mémo débutant python (9.1)
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Un mémo que j'ai écrit un tri de fusion en Python
À propos de l'héritage Python
Les bases de Python ①
★ Mémo ★ Python Iroha
Bases de python ①
Écrire une note sur la version python de python virtualenv
À propos de python, range ()
[Python] Mémo EDA
À propos de Python Decorator
[Note] À propos du rôle du trait de soulignement "_" en Python
Mémo de métaclasse Python3
[Python] Mémo de fond de carte
À propos de la référence Python
À propos des décorateurs Python
[Python] À propos du multi-processus
À propos des copies superficielles et profondes de Python / Ruby
Mémo débutant Python (2)
[Python] Mémo Numpy
Introduction de Python
Obtenez la date de mise à jour du fichier de mémorandum Python.
Exemple d'implémentation d'un système de traitement LISP simple (version Python)
Mémo connecté à HiveServer2 d'EMR avec python
La douleur de gRPC en utilisant Python. Novembre 2019. (Mémo personnel)
Un mémo sur la création d'une application Django (Python) avec Docker