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 ?

Patricia Arquette
Libérer: 2024-11-03 21:07:29
original
745 Les gens l'ont consulté

Why Does Python Throw a

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal