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

Programmation multimédia/Jeux Python Discussion :

Choix encodage pour fichier de données


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut Choix encodage pour fichier de données
    Bonjour

    Je suis en train de réaliser un exporteur 3d pour mon logiciel favoris : Blender.
    Or comme vous le savez surement, le langage de script de Blender, est le python. D'où ma venue ici

    Je cherche donc une solution optimale pour encoder mes données.
    Le fichier est composé de 4 ou 5 lettres différentes du style "v" pour vertice, "f" pour face. Mais il est surtout composé de nombres à virgules.

    Avec le code suivant, j'ai pu déterminer l'encodage par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print sys.getdefaultencoding()
    Ce qui me renvoie 'ascii', or on ne peut pas dire que ça soit la meilleure solution (1 octet par symbole, ça le fait pas).
    Les fichiers seront composés à 98% de nombres à virgule. En moyenne, chaque nombre à virgule a 7 chiffres significatifs. En ASCII, ça donne donc, exactement 8 octets par nombre. Alors qu'en norme IEEE754, par exemple, ça donnerait exactement 4 octets. On arrive, alors, à diviser par deux la taille d'un fichier 3D. Ce n'est pas négligeable.

    Ainsi, je compte utiliser la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sys.setdefaultencoding()
    Elle permettra, je l'espère, de choisir un type d'encodage plus approprié.

    J'ai trouvé une liste des encodages disponibles ici.

    J'aimerai donc savoir ce que vous me conseillez comme encodage.
    La solution devrait surtout tenir compte du fait qu'il faut écrire de nombreux nombres à virgules (float, double).
    Après les séparations peuvent très bien se faire par un autre moyen que des lettres.

    En vous remerciant d'avance,
    Cordialement,
    Vi.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    L'ascii comporte 128 possibilités de caractères (de 0 à 127) dont 95 imprimables, codés dans un seul octet par caractère:

    http://fr.wikipedia.org/wiki/America...on_Interchange


    Donc, si tu n'as que des nombres 0..9, des caractères courants de ponctuation (,;:. etc), des lettres non accentuées minuscules (a..z) ou majuscule (A..Z), l'ascii fait ça très bien.

    Par contre, si tu utilises des caractères différents: caractères accentués, lettres grecques, symboles mathématiques, etc..., tu as besoin d'un autre encodage, mais il faut que cet encodage soit le même que celui qui est attendu par le logiciel utilisateur (blender?).

    Heureusement, la plupart des encodages sur 1 octet sont communs avec l'ascii pour <127. Par contre, si le logiciel utilisateur attend de l'unicode sur 16 bits, il faudra coder en utf-16.

    Tu n'as pas besoin de modifier sys.getdefaultencoding() pour cela. Avec Python, tu peux travailler en unicode en interne et encoder en entrée et en sortie avec ce que tu veux. C'est seulement quand tu omets l'encodage à utiliser et que Python en a besoin, qu'il utilise l'encodage par défaut (ascii).

    Tyrtamos

  3. #3
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Ce n'est pas un problème d'encodage que tu as. Il faut que tu regardes du coté du module struct qui permet d'enregistrer des données numériques en format binaire.

    http://docs.python.org/library/struct.html

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Nikel le module struct
    Merci beaucoup pour votre aide

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/10/2006, 17h48
  2. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01
  3. [C#]Quel meilleur choix pour présentation/logique/données?
    Par pmartin8 dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 22/03/2006, 21h35
  4. [ASA] Quelle extention pour les fichiers de données?
    Par Goldorak2 dans le forum SQL Anywhere
    Réponses: 2
    Dernier message: 07/12/2005, 09h28
  5. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26

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