Comment corriger \'TypeError : \'str\' ne prend pas en charge l'interface tampon\' dans la compression Python GZIP ?

DDD
Libérer: 2024-11-26 16:10:15
original
425 Les gens l'ont consulté

How to Fix

Dépannage "TypeError : 'str' ne prend pas en charge l'interface tampon" dans Python GZIP Compression

Lors de la compression de chaînes à l'aide du module gzip de Python, les développeurs peuvent rencontrer l'erreur « TypeError : 'str' ne prend pas en charge l'interface tampon. » Cette erreur provient de la transition de Python 2.x vers Python 3.x, où le type de données de la chaîne a changé.

Pour résoudre ce problème, il est nécessaire d'encoder la chaîne en octets avant de l'écrire dans le fichier de sortie. L'extrait de code suivant corrige le code fourni dans la question :

plaintext = input("Please enter the text you want to compress").encode('UTF-8')
filename = input("Please enter the desired filename")
with gzip.open(filename + ".gz", "wb") as outfile:
    outfile.write(plaintext)
Copier après la connexion

En codant le texte brut en octets, nous garantissons la compatibilité avec le type de données chaîne révisé dans Python 3.x. De plus, pour éviter toute confusion, il est recommandé d'utiliser des noms de variables différents pour les fichiers d'entrée et de sortie, car « texte brut » et « nom de fichier » sont des mots réservés en Python.

Par exemple, le code suivant montre comment compresser efficacement le texte polonais avec l'encodage UTF-8 :

text = 'Polish text: ąćęłńóśźżĄĆĘŁŃÓŚŹŻ'
filename = 'foo.gz'
with gzip.open(filename, 'wb') as outfile:
    outfile.write(bytes(text, 'UTF-8'))
with gzip.open(filename, 'r') as infile:
    decompressed_text = infile.read().decode('UTF-8')
print(decompressed_text)
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal