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.
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