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 :

Erreur avec pickle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut Erreur avec pickle
    Bonjour à tous,
    J'apprend Python avec le cours de Gérard Swinnen (excellent !...).
    J'en suis au chapitre 9.9 : utilisation de pickle.
    Mon script ne fonctionnant pas, j'ai fait un copier-coller des exemples du cours (ci-dessous) et ça ne marche pas non plus, les variables a,b,c, ne sont apparemment pas reconnues.
    Une idée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    a = 5
    b = 2.83
    c = 67
    f = open('Monfichier', 'w')
    f.write(str(a))
    f.write(str(b))
    f.write(str(c))
    f.close()
    f = open('Monfichier', 'r')
    print f.read()
    f.close()
    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
     
    import pickle
    f = open('Monfichier', 'w')
    pickle.dump(a, f)
    pickle.dump(b, f)
    pickle.dump(c, f)
    f.close()
    f = open('Monfichier', 'r')
    t = pickle.load(f)
    print t, type(t)
    t = pickle.load(f)
    print t, type(t)
    t = pickle.load(f)
    print t, type(t)
    f.close()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>> 
    52.8367
    >>> ================================ RESTART ================================
    >>> 
     
    Traceback (most recent call last):
      File "C:\progs\Fichiers5.py", line 4, in <module>
        pickle.dump(a, f)
    NameError: name 'a' is not defined
    >>>

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    L"erreur se produit à la ligne 4, il s'agit donc d'un autre script.

    Effectivement les données ne sautent pas d'un script à l'autre, ce qui créerai un sacré foutoir, non ?

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut Erreur avec pickle
    Normalement le premier script crée un fichier "Monfichier" qui contient les variables a,b,c et c'est dans ce fichier (qui est existe effectivement après avoir fait "runner" le script...) que le deuxième script va chercher les variables...mais ne les trouve pas.
    Bizarre,bizarre...

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut


    Cou donc, et où donc est-ce t’y donc (comment ça, y’a trop d’donc*?) qu’il charge tes variables a, b et c depuis le fichier, ton deuxième script*?

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut Erreur avec pickle
    Bonjour,
    Ah ben, ah que... j'sais pas moi !
    Y fait pas ça tout seul ?
    Citation de Swinnen un peu plus haut dans le cours :
    "L'utilisation d'un fichier ressemble beaucoup à l'utilisation d'un livre. Pour utiliser un livre, vous devez d'abord le trouver (à l'aide de son titre), puis l'ouvrir. Lorsque vous avez fini de l'utiliser, vous le refermez. Tant qu'il est ouvert, vous pouvez y lire des informations diverses, et vous pouvez aussi y écrire des annotations, mais généralement vous ne faites pas les deux à la fois."
    On a bien écrit dans le fichier au premier script puis on l'a refermé; on l'a rouvert au deuxième script pour utiliser ce qui avait été écrit dans ce fichier...
    Et y dit qui trouve pas ??? Sait pas lire peut-être ???
    Blague à part, le problème se situe sûrement par là, mais je ne sais pas comment fonctionne un processus de transfert de données...(débutant, niveau maternelle !)

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Mais justement, tu ne lis pas ce fichier dans ton deuxième script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import pickle
    f = open('Monfichier', 'w')
    pickle.dump(a, f)
    pickle.dump(b, f)
    pickle.dump(c, f)
    ...
    Tu l'ouvres en écriture et tu éssayes directement de pickler dedans des données qui n'existent pas dans ce code.

    Copie la fin de ton premier code au début du deuxième pour recupérer tes données en premier lieu.

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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