IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Pb ecriture dans un fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!'

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Si la librairie Hachoir ne repond pas à ton besoin ou que tu veux coder toi même, les sources devraient t'aider.

    Bon hack

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Resolution Pb
    Bonjour à toutes et tous,

    J'ai fini par trouvé, l'erreur est d'ouvrir les fichiers à écrire en "w" write only et comme je suis sous windows les caractères "LF" ont été automatiquement converti en "CR LF"!
    Petite vacherie il faut ouvrir en "wb"! CQFD

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33
  2. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  3. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46
  4. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo