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
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.
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
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
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!