2 votes

décompresser une chaîne de caractères zip en Python 2.7

J'essaie de décompresser une chaîne encodée en byte64 avec Python 2.7.

Je peux vérifier que ma chaîne est valide en exécutant ceci en ligne de commande :

echo -n "MY_BASE64_ENCODED_STRING" | base64 -d | zcat

Cependant, si je l'exécute avec Python2.7 :

b64_data = 'MY_BASE64_ENCODED_STRING'
text_data = zlib.decompress(base64.b64decode(b64_data))

J'obtiens une exception :

Erreur -3 lors de la décompression des données : vérification incorrecte de l'en-tête

Dois-je passer des paramètres supplémentaires à zlib.decompress pour que cela fonctionne ?

2voto

Ryan P Points 8292

Comme indiqué dans les commentaires, vos données sont au format gzip et ne sont pas simplement des données compressées en zlib. Dans Python 2.7, vous pouvez utiliser GzipFile con StringIO pour traiter la chaîne :

>>> from gzip import GzipFile
>>> from StringIO import StringIO
>>> from base64 import b64decode
>>> data = 'H4sIAEm2algAAytJLS7hAgDGNbk7BQAAAA=='
>>> GzipFile(fileobj=StringIO(b64decode(data))).read()
'test\n'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X