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

Bibliothèques tierces Python Discussion :

probleme lecture ecriture pickle module


Sujet :

Bibliothèques tierces Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 6
    Par défaut probleme lecture ecriture pickle module
    bonjour ,

    je bosse dans le cadre scolaire sur un projet jeux video pygame je suis chargé de concevoir
    un système de sauvegarde ... dans un premier temps j'ai coder en procédurale un système pour
    me sauvegardé une matrice puis de chercher dans le fichier pour me la réaficher .....

    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
     
     
    matrix =[[1,2,3],
            [4,5,6],
            [7,8,9]]
     
    def ecriture(nom_fichier,matrix):
     
        # ouverture du fichier 
        with open("nom_fichier","ab") as pickle_file:
            pickle.dump(matrix, pickle_file)        
            pickle.dump(matrix, pickle_file)
     
        print(" écriture des données ")
    	# ferrmeture du fichier 
        pickle_file.close
        print("fermeture des fichiers")
        print("---------------------------")
     
    def lecture(nom_fichier):
     
     
        with open("nom_fichier","rb") as pickle_file:
        	ma_variable = pickle.load(pickle_file)
     
        print("chagement de mes variables ")
        print(ma_variable)
     
        print("---------------------------")
    Toutes suggestion à la vu de mon code est la bien venu (commentaire,critique, piste de recherche en tout genre)

    => le mode ouverture du fichier de la fonction écriture ici "AB" était aupartavant "wb"
    je n'arrive pas à sauvegardé plusieurs matrice et en lire plusieurs je pensais que c'était le mode d'ouverture
    les éssais mon donnés tort ....



    merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par thewthiterabbit Voir le message
    je n'arrive pas à sauvegardé plusieurs matrice et en lire plusieurs je pensais que c'était le mode d'ouverture
    Je ne comprends pas pourquoi vous utilisez pickle pour faire çà. Néanmoins, quelque soit la solution, il faut commencer par jouer avec pour s'assurer que çà fait ce qu'on en attend (et qu'on va savoir comment le mettre en oeuvre).

    Pour çà, on peut lancer la console et expérimenter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import pickle
    >>> m = 1,2,3
    >>> s = pickle.dumps(m)
    >>> s
    b'\x80\x03K\x01K\x02K\x03\x87q\x00.'
    Puis je fabrique un z ou je concatène 2 fois s:
    J'en fait un file-like:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> import io
    >>> f = io.BytesIO(z)
    puis je lis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> pickle.load(f)
    (1, 2, 3)
    >>> pickle.load(f)
    (1, 2, 3)
    >>> pickle.load(f)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    EOFError: Ran out of input
    et j'ai bien récupéré mes deux tableauxobjets.

    Voilà un peu comment çà marche...

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 6
    Par défaut
    merci bcp pour ce debut très bonne piste , meme si je rencontre des petits problèmes

    j'ai commencer à réfflechir à une petite base de données(sqlite) afin de stocker
    mes matrices puis aussi le nom des joueurs pourquoi pas leurs niveau




    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
    >>> m = 1,2,3
    >>> s = pickle.dumps(m)
    >>> print(s)
    b'\x80\x03K\x01K\x02K\x03\x87q\x00.'
    >>> z = s+s
    >>> print(z)
    b'\x80\x03K\x01K\x02K\x03\x87q\x00.\x80\x03K\x01K\x02K\x03\x87q\x00.'
    >>> import io
    >>> f = io.StringIO(z)
    Traceback (most recent call last):
      File "<pyshell#12>", line 1, in <module>
        f = io.StringIO(z)
    TypeError: initial_value must be str or None, not bytes
    >>> z = str(z)
    >>> f = io.StringIO(z)
    >>> pickle.load(f)
    Traceback (most recent call last):
      File "<pyshell#15>", line 1, in <module>
        pickle.load(f)
    TypeError: a bytes-like object is required, not 'str'
    >>> variable = pickle.load(f)
    Traceback (most recent call last):
      File "<pyshell#16>", line 1, in <module>
        variable = pickle.load(f)
    TypeError: a bytes-like object is required, not 'str'
    >>>
    mais j'avance merci bcp

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 6
    Par défaut
    re , pk utiliser io.StringIO(z) et pas un pickle.dump(z)
    je ne comprends pas et j'aime pas utiliser quelque chose sans comprendre



    merci d'avance

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par thewthiterabbit Voir le message
    re , pk utiliser io.StringIO(z) et pas un pickle.dump(z)
    C'est io.BytesIO qu'il faut utiliser (j'ai corrigé mon message).

    Citation Envoyé par thewthiterabbit Voir le message
    je ne comprends pas et j'aime pas utiliser quelque chose sans comprendre
    La bibliothèque io est "standard" donc pour savoir ce que çà fait, c'est assez facile : un file-like <=> un fichier en mémoire.

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 6
    Par défaut
    merci bcp

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

Discussions similaires

  1. probleme lecture et ecriture dans les tube nommés
    Par El-Patron dans le forum POSIX
    Réponses: 0
    Dernier message: 28/11/2009, 10h58
  2. probleme lecture/ecriture socket
    Par joubiyann dans le forum C#
    Réponses: 1
    Dernier message: 31/03/2009, 09h56
  3. probleme lecture/ecriture fichier
    Par chouralie dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/06/2008, 08h15
  4. probleme lecture et ecriture fichier texte
    Par shams dans le forum C
    Réponses: 10
    Dernier message: 06/07/2007, 10h46
  5. probleme lecture ecriture dans des fichiers
    Par xman_genius dans le forum C
    Réponses: 9
    Dernier message: 16/01/2007, 19h50

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