Maison > Article > développement back-end > Pourquoi Python renvoie-t-il une erreur « UnicodeDecodeError : 'utf-8\' ne peut pas décoder l'octet 0xff...\" lors de l'ouverture d'un fichier ?
Dépannage : "UnicodeDecodeError : le codec 'utf-8' ne peut pas décoder l'octet 0xff..." dans Python Tools/Process.py
Lors de la compilation de "process.py" à partir du référentiel pix2pix-tensorflow, Python génère l'erreur "UnicodeDecodeError : le codec 'utf-8' ne peut pas décoder l'octet 0xff en position 0 : octet de démarrage invalide." Lors du traçage de l'erreur, il pointe vers la ligne 113 dans "process.py":
<code class="python">contents = open(path).read()</code>
Comprendre l'erreur :
Python tente de décoder un tableau d'octets représentant une chaîne codée UTF-8 en chaîne Unicode. Au cours de ce processus de décodage, il rencontre la séquence d'octets invalide « 0xff » au début du tableau d'octets. Cette séquence d'octets n'est pas autorisée dans le codage UTF-8, ce qui provoque l'erreur.
Cause possible :
Le chemin fourni à la fonction open() contient probablement des données binaires. ce n'est pas codé en UTF-8. Cela signifie que Python attend des données texte et rencontre des caractères non textuels, ce qui entraîne un échec de décodage.
Solution :
Pour résoudre l'erreur, il est nécessaire de gérer le fichier en mode binaire. Cela empêche Python de tenter de décoder les données binaires sous forme de texte. Voici comment procéder :
<code class="python">with open(path, 'rb') as f: contents = f.read()</code>
En ajoutant « b » au mode open(), le fichier est traité comme binaire et le contenu est lu sous forme d'octets au lieu d'essayer de le décoder sous forme de texte. Cela devrait résoudre l'UnicodeDecodeError.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!