Maison > développement back-end > Tutoriel Python > Comment corriger « TypeError : un objet de type octets est requis, pas « str » » lors de la gestion des fichiers dans Python 3 ?

Comment corriger « TypeError : un objet de type octets est requis, pas « str » » lors de la gestion des fichiers dans Python 3 ?

Mary-Kate Olsen
Libérer: 2024-12-01 08:39:11
original
410 Les gens l'ont consulté

How to Fix

Gestion du contenu du fichier dans Python 3 : résolution de « TypeError : un objet de type octets est requis, pas 'str'"

En Python 2.7, lire les lignes d'un fichier et effectuer des opérations sur celles-ci était simple. Cependant, lors de la migration vers Python 3.5, les utilisateurs peuvent rencontrer un problème où l'instruction « if » contenant une comparaison de chaîne dans une boucle for génère une « TypeError : un objet de type octets est requis, pas « str » ». Cette différence résulte de la gestion différente du contenu des fichiers dans Python 3.

Dans Python 3, les fichiers sont ouverts en mode binaire par défaut, ce qui signifie que toutes les données lues à partir du fichier sont renvoyées sous forme d'objets octets au lieu de chaînes. Cela peut provoquer des erreurs lors de l'exécution de comparaisons de chaînes dans une boucle for.

Pour résoudre ce problème, il existe deux options :

  1. Changer le mode d'ouverture de fichier en mode texte : En ouvrant le fichier en mode texte (« r » au lieu de « rb »), les données seront automatiquement converties en chaînes lors de la lecture, résolvant ainsi le problème. TypeError.
  2. Utiliser des objets de type octets pour la comparaison : Si vous souhaitez conserver le fichier en mode binaire, vous pouvez utiliser des objets octets pour la comparaison au lieu de chaînes. Par exemple, au lieu de "if 'some-pattern' in tmp: continue", utilisez "if b'some-pattern' in tmp: continue".

En suivant l'une ou l'autre de ces méthodes, vous peut garantir que le contenu du fichier est géré correctement dans Python 3, empêchant le TypeError et vous permettant de continuer votre codage sans interruption.

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