Maison  >  Article  >  développement back-end  >  Pourquoi mon code Python génère-t-il une UnicodeDecodeError lors de la lecture de fichiers ?

Pourquoi mon code Python génère-t-il une UnicodeDecodeError lors de la lecture de fichiers ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 12:17:02360parcourir

Why Does My Python Code Throw a UnicodeDecodeError When Reading Files?

Erreur de décodage en Python : UnicodeDecodeError lors de la conversion d'octets

Une erreur courante rencontrée en Python lors de l'utilisation de chaînes est l'UnicodeDecodeError lors de la tentative de décodage octets en utilisant le codec UTF-8. Cette erreur se produit lorsque Python tente d'interpréter un tableau d'octets comme une chaîne codée en UTF-8 et rencontre une séquence d'octets non conforme aux règles UTF-8.

Dans le cas spécifique référencé dans le document fourni URL, l'erreur s'est produite lors de la compilation du script "process.py" à partir du référentiel GitHub pix2pix-tensorflow. Le script a tenté de lire et de charger un fichier (en particulier une image) à l'aide de open(). Lorsque Python a essayé de décoder le contenu du fichier sous forme de chaîne UTF-8, cela a échoué car la séquence d'octets au début du fichier n'était pas autorisée dans le codage UTF-8.

La cause première de cette erreur est l'inadéquation entre la nature réelle du contenu du fichier et l'hypothèse de Python selon laquelle il est codé en UTF-8. Le fichier d'origine peut être un fichier binaire, tel qu'une image ou des données compressées, qui ne peut pas être décodé de manière fiable en UTF-8.

Pour résoudre ce problème, il convient de lire explicitement le fichier en tant que données binaires à l'aide de l'option ' mode rb' dans la fonction open() :

<code class="python">with open(path, 'rb') as f:
    contents = f.read()</code>

En utilisant le mode 'rb', Python traitera le fichier comme binaire et ne tentera pas de le décoder. Cela empêchera l'UnicodeDecodeError de se produire.

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!

Déclaration:
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