Maison > développement back-end > Tutoriel Python > Comment résoudre l'erreur « TypeError : un objet de type octets est requis » de Python lors de la gestion du contenu du fichier ?

Comment résoudre l'erreur « TypeError : un objet de type octets est requis » de Python lors de la gestion du contenu du fichier ?

Susan Sarandon
Libérer: 2024-12-02 17:54:12
original
619 Les gens l'ont consulté

How to Resolve Python's

Gestion des erreurs de contenu de fichier dans Python 3 : résolution de « TypeError : un objet de type octets est requis »

Python 3 a introduit un changement significatif dans la façon dont il gère contenu du fichier. Cela peut entraîner des erreurs lors de la migration du code à partir de versions antérieures de Python, telles que l'erreur courante "TypeError : un objet de type octets est requis, pas 'str'".

L'erreur se produit lors de la tentative d'exécution d'une chaîne. comme les opérations sur un objet bytes, résultant généralement de l'ouverture d'un fichier en mode binaire (par exemple, 'rb'). Examinons un scénario courant dans lequel cette erreur pourrait survenir :

with open(fname, 'rb') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
Copier après la connexion

Dans cet exemple, le fichier fname est ouvert en mode binaire, ce qui signifie que toutes les données lues à partir de celui-ci sont renvoyées sous forme d'objets octets. Cependant, la variable de ligne suivante est traitée comme une chaîne par l'opérateur in.

Pour résoudre l'erreur, on peut soit décoder l'objet bytes, soit ouvrir le fichier en mode texte au lieu du mode binaire.

Décodage des objets octets

Pour décoder l'objet octets tmp en une chaîne, on peut utiliser le decode() méthode :

if b'some-pattern' in tmp.decode(): continue
Copier après la connexion

Ouverture de fichiers en mode texte

Alternativement, le fichier peut être ouvert en mode texte ('r' au lieu de 'rb'), ce qui décodera automatiquement les données comme il est lu :

with open(fname, 'r') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
Copier après la connexion

En suivant ces directives, vous pouvez vous assurer que votre code Python 3 gère correctement le contenu du fichier et éviter le Erreur "TypeError : un objet de type octets est requis".

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