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