Bonjour,
lorsque j'étais en python 2.7, je pouvais parser un fichier texte compressé pour réaliser mes traitements. Depuis 3.3, les données lues sont binaires et mes traitements échouent:

Voici un ecm :
soit un fichier foo.txt, foo.zip (contenant le foo.txt compressé)!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from zipfile import ZipFile
 
bar=(ZipFile('foo.zip')).open('foo.txt')
foo=open('foo.txt','r')
 
for ligne in foo:
    print(ligne.strip('\n'))
 
print("Zippé maintenant")
for ligne in bar:
    print(ligne)
    print(ligne.strip('\n'))

Résultats en 2.7:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
AAA
BBB
CCC
DDD
Zippé maintenant
AAA
BBB
CCC
DDD
Résultats en 3.3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
AAA
BBB
CCC
DDD
Zippé maintenant
b'AAA\n'
Traceback (most recent call last):
  File "ecm.py", line 15, in <module>
    print(ligne.strip('\n'))
TypeError: Type str doesn't support the buffer API
J'aimerai, si possible éviter de désarchiver temporairement le fichier à lire.

Cordialement