Pb ecriture dans un fichier
Bonjour à toutes et tous,
J'ai écrit une fonction séparant l'en-tête d'un fichier image de sa partie donnée.
Mon problème se situe dans le résultat. Lorsque je regarde avec un éditeur hexa la position du fin de header d'un fichier jpg je le trouve en @ 209. Mon fichier header.dat "pèse" lui 213 Octets, mieux encore le fichier data.dat lui "pèse" 144483 octets au lieu des 143955 qu'il devrait????
Une idée?
D'avance merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
def separate(file_name):
try:
load = open(file_name, "rb").read()
h_end = chr(255) + chr(196)
header_name = "hd_src.dat"
data_name = "d_src.dat"
idx = 0
typ = ord(load[0]) # lecture du 1er car du fichier et conversion du contenu en entier
if typ == 71: # G
# print 'Le fichier ' + file_name + ' est une image GIF'
None
elif typ == 137:
# print 'Le fichier ' + file_name + ' est une image PNG'
None
elif typ == 255:
# print 'Le fichier ' + file_name + ' est une image JPG'
# recup du header compris entre le premier octet et le premier FF C4
# puis des datas
store_h = open(header_name, "w")
# find FF C4 ou chr(255) chr(196)
idx = load.find(h_end) + 2
print "Trouver FF C4 en : " + str(idx)
store_h.write(load[0 : idx])
store_h.close()
store_d = open(data_name, "w")
store_d.write(load[idx:])
store_d.close()
print str(len(load) - idx) + " donnees lues."
else:
print 'Le fichier ' + file_name + ' n\'est pas une image!'
print typ
except:
print 'Fichier ' + file_name + ' inexistant!' |