[python] problème avec le paramètre rb.

Fermé
JEAN-JACQUES - Modifié par JEAN-JACQUES le 22/04/2012 à 16:19
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 22 avril 2012 à 21:28
Bonjour,

Mon but est de faire un script capable de mettre à l'envers le code d'une image gif.

Voici mon code:
# -*-coding:Latin-1 -* 
import os 

os.chdir("C:/test") 
source = open("file", "rb").read()[::-1]   
print(source) 
fichier = open("chaine3", "a") 
source = str(source) 
fichier.write(source) 


le problème c'est que le résultat comporte des caractère spéciaux par exemple @&"... alors qu'il devrai avoir que de l'hexa 'enfin je pense). Shocked Confused

Qu'en pensez vous ?

A voir également:

1 réponse

heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 131
Modifié par heyquem le 22/04/2012 à 21:45
Salut,


Je pense qu'il te suffit d'écrire 'ab' et non pas seulement 'a' comme mode dans
fichier = open("chaine3", "a") 



J'ai vérifié avec le code suivant:

# -*-coding:Latin-1 -*  

from struct import pack 

fs = open("G:\\Python27\\tcl\\tix8.4.3\\bitmaps\\minus.gif", "rb") 
source = fs.read() 
fs.close() 

print tuple(pack('c',x) for x in source) 

print '\n--------------------------------\n' 

source =  source[::-1] 
print tuple(pack('c',x) for x in source) 

fichier = open("I:\\all\\chaine3.gif", "wb")   
fichier.write(source) 
fichier.close() 

print '\n====================================\n' 

f = open("I:\\all\\chaine3.gif",'rb') 
cc = f.read() 
f.close()
print tuple(pack('c',x) for x in cc)


Le résultat est:


('G', 'I', 'F', '8', '9', 'a', '\t', '\x00', '\t', '\x00', '\x80', '\x00', '\x00', '\xb2', '\xc0', '\xdc', '\x00', '\x00', '\x00', '!', '\xf9', '\x04', '\x01', '\x00', '\x00', '\x00', '\x00', ',', '\x00', '\x00', '\x00', '\x00', '\t', '\x00', '\t', '\x00', '\x00', '\x02', '\x10', '\x8c', '\x8f', '\xa0', '\x0b', '\xc6', '\xeb', '^', '\x0b', '\xf3', 'L', 'y', 'e', '|', '\xa8', '\x87', '\x02', '\x00', ';') 

-------------------------------- 

(';', '\x00', '\x02', '\x87', '\xa8', '|', 'e', 'y', 'L', '\xf3', '\x0b', '^', '\xeb', '\xc6', '\x0b', '\xa0', '\x8f', '\x8c', '\x10', '\x02', '\x00', '\x00', '\t', '\x00', '\t', '\x00', '\x00', '\x00', '\x00', ',', '\x00', '\x00', '\x00', '\x00', '\x01', '\x04', '\xf9', '!', '\x00', '\x00', '\x00', '\xdc', '\xc0', '\xb2', '\x00', '\x00', '\x80', '\x00', '\t', '\x00', '\t', 'a', '9', '8', 'F', 'I', 'G') 

==================================== 

(';', '\x00', '\x02', '\x87', '\xa8', '|', 'e', 'y', 'L', '\xf3', '\x0b', '^', '\xeb', '\xc6', '\x0b', '\xa0', '\x8f', '\x8c', '\x10', '\x02', '\x00', '\x00', '\t', '\x00', '\t', '\x00', '\x00', '\x00', '\x00', ',', '\x00', '\x00', '\x00', '\x00', '\x01', '\x04', '\xf9', '!', '\x00', '\x00', '\x00', '\xdc', '\xc0', '\xb2', '\x00', '\x00', '\x80', '\x00', '\t', '\x00', '\t', 'a', '9', '8', 'F', 'I', 'G')
0

Discussions similaires