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 :

Bug de format de fichier cp1252?


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 21
    Points
    21
    Par défaut Bug de format de fichier cp1252?
    Bonjour ou bonsoir à vous,
    Je suis dans le souci car étant débutant dans le python, je ne comprends absolument pas le problème qui m'arrive :

    Je dois créer un mini-projet ou je commence par stocker Identifiants et mot de passe dan sun fichier texte, après avoir éxécuté ce prémisse de programme, je double-clique sur le fichier .txt et là j'ai une erreur qui s'affiche :
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    The file's encoding is invalid for Python 3.x. /
    IDLE will convert it to UTF-8. \
    What is the current encoding of the file? /
    cp1252 #c'est une zone de texte \
    OK Cancel /
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    je clique sur ok (cancel ne renvoie sur rien), et là, stupeur et tremblements, je vois pleins de caractères spéciaux qui ne correspondent à rien
    Je ne sais pas quoi faire et n'ai pas trouvé d'aide sur internet
    voici mon code (court) :



    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
    import pickle
     
    #On commence par demander le nombre de votants
     
    def initialisation():
        classe=input("Dans quelle classe d'effectue le vote ?")
        Nbr_votants=int(input("Combien de personnes voteront ? "))
        return Nbr_votants
     
    #On va rentrer dans un dictionnaire les noms des votants et leurs mots de passes
     
    def rentrée_données(Nbr_votants):
        dico={}
        for i in range(0,Nbr_votants):
            identité=input("Prenom et nom ?")
            mot_de_passe=input("mot de passe à associer ?")
            dico[identité]=mot_de_passe
     
     
     #toujours dans la définition, on essaye de mettre le dictionnaire dans un fichier       
        fiche_identités="fiche_identités.txt"
        fichier=open(fiche_identités, "wb")
        pickle.dump(dico, fichier)
        fichier.close()
     
     
    #Là c'est le corps du programme
    Nbr_votants=initialisation()
    rentrée_données(Nbr_votants)

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    ... je double-clique sur le fichier .txt
    Dans quel but ? L'ouvrir dans l'éditeur de texte associé aux .txt ?

    Inutile, c'est un fichier binaire illisible par tous sauf par Python à condition d'utiliser son module pickle comme pour l'écriture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    with open("fiche_identités.txt", "rb") as inf:
        identites = pickle.load(inf)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 21
    Points
    21
    Par défaut
    Ah ? Donc Python pourra retirer les informations comme prévus ! Super ! Merci beaucoup ^^

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Votre fichier n'est pas un fichier texte.
    Pourquoi se mettre une balle dans le pied en lui donnant une extension en ".txt"?
    Choisissez autre chose: <fichier>.dat, <fichier>.pickle_data, ...

    Stocker un dico clé, valeur où clés et valeurs sont des chaînes de caractères dans un fichier .txt, n'est pas compliqué:

    Ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def dump_data(dico):
       with open('fichier.txt', 'w') as f:
           for k, v in dico.items():
                f.write ('%s %s\n' % (k, v))
    Lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def load_data():
        dico = {}
        with open('fichier.txt') as f:
           for line in f.read().splitlines():
                k, v = line.split(' ')
                dico[k] = v
        return dico
    "pickle" compose/agrège bien trop de concepts, d'abstractions que vous ne maîtrisez pas: objet, état, sérialisation, cycle de vie,... Il fait bien plus que le truc tout simple que vous demandez. Rien de compliqué sauf que "ces plus" ont des implications, des conséquences que vous ne maîtrisez pas trop.

    In fine, votre code fonctionne grâce à une sorte crédit que vous faites (à ces fonctionnalités utilisées sans trop piger).
    Si la chose échappe a votre contrôle: c'est "panique à bord"!
    C'est un risque. Lorsqu'il se réalise, comment avancer sans devoir payer cette dette (technique)?

    Goto "forum"! Mais çà me fait penser à Madame du Barry: "Encore un moment, monsieur le bourreau, un petit moment"

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Bug de format de fichier cp1252?
    Par Displayed dans le forum Général Python
    Réponses: 1
    Dernier message: 03/05/2014, 21h26
  2. [C / C++][Format de fichier] Le TIFF G4
    Par chronos dans le forum Windows
    Réponses: 1
    Dernier message: 17/06/2005, 15h57
  3. Format de fichier extensible
    Par Rodrigue dans le forum C++Builder
    Réponses: 9
    Dernier message: 11/06/2005, 14h45
  4. [Format de Fichier] Recherche de site
    Par Pedro dans le forum Windows XP
    Réponses: 5
    Dernier message: 12/04/2005, 16h11
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 20h22

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