Problème de flag pickle

Bonjour. C'est bizarre, j'y arrivais avant, mais la, je n'arrive pas à importer un fichier avec pickle. Quand je met le flage "rb", il me dit

"Traceback (most recent call last):
  File "C:\Users\Pr.Witherfire\PycharmProjects\PCHI\main.py", line 833, in <module>
    FoImportation()
  File "C:\Users\Pr.Witherfire\PycharmProjects\PCHI\main.py", line 742, in FoImportation
    open(LoadGeneral, "rb")
TypeError: 'str' object cannot be interpreted as an integer

Mais je ne lui demande absolument pas d'interpreté le flag comme un entier!

Merci.

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    Ce ne serait pas plutôt :

    LoadGeneral = "D:\Pr.Witherfire\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegardes\Sauve.Sauve"
    
    fichier = open(LoadGeneral, "rb")
    Srest = pickle.load(fichier)
    1. C'est ce que je viens de lui expliquer ...

  2. Bonjour,

    Peux tu afficher ton code que l'on puisse examiner le problème

    (avec les balises de code, comme d'habitude :-) )

    Normalement, tu a fait un truc dans ce genre:

    f = open(nom_du_fichier,'rb')
    ma_donnee = pickle.load(f)
    # etc ....
    
    1. LoadGeneral = "D:\Pr.Witherfire\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegardes\Sauve.Sauve"
      
      open(LoadGeneral, "rb")
      Srest = pickle.load(LoadGeneral)
      Exp = Srest.get("Exp")
      close(LoadGeneral)

      L'idée, c'est de récuperer la variable "Exp" dans le fichier

    2. @Pr.Witherfire

      https://www.mediafire.com/file/q3kryugi8ojvqfe/Sauve.Sauve/file

      Le fichier en question

  3. ok, ce n'est pas du tout comme ça

    correction:

    LoadGeneral = "D:\Pr.Witherfire\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegardes\Sauve.Sauve"
    
    f = open(LoadGeneral, "rb")
    exp = pickle.load(f) # ici on récupère une donnée dans le fichier
    close(f)

    pickle.load recoit un identifiant de fichier, pas le nom du fichier 

    1. Ok merci beaucoup cela marche comme sur des roulettes ! Au revoir

      1. EDIT: J'ai essayé dans un autre code, plus conséquent, cà ne marche pas...

      2. @Pr.Witherfire

        Le voila

        # IMPORTS---------------------------------------------------------------------------------------------------------------
        
        
        
        
        import pickle
        from tkinter import *
        from os import *
        
        
        
        
        # INFOS-----------------------------------------------------------------------------------------------------------------
        
        Version = "Consolaire"
        Color1 = "#41413F"
        Color2 = "white"
        Police = "Arial"
        LoadGeneral = "D:\Gwenneg\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegardes\Sauve.Sauve"
        
        
        
        
        
        # FONCTIONS-------------------------------------------------------------------------------------------------------------
        
        
        
        
        
        
        
        
        def FoFermetureMenu(self):
        
        
            NbDeProjetP1=0
            S = {"NbDeProjetP1": int(NbDeProjetP1), "Exp": 1}
            with open(LoadGeneral, "wb") as FileSGenerale:
                pickle.dump(S, FileSGenerale)
            F.destroy()
        
        
        
        
        
        # Importation
        
        
        
        
        LoadGeneral = "D:\Gwenneg\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegardes\Sauve.Sauve"
        fichier = open(LoadGeneral, "rb")
        Srest = pickle.load(fichier)
        exp = Srest["Exp"]
        print(Srest)
        print(exp)
        
        
        def FoMenu():
        
            F = Tk()
            global Exp
            F.title(Version + " Menu")
            F.iconbitmap("D:\Gwenneg\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Ressources\Images\Logo.ico")
            F.geometry("1600x900+-8+0")
            F.overrideredirect(0)
            F.config(bg=Color1)
            CMenu = Canvas(F, width=1600, height=270, bg=Color2)
            CMenu.place(x=0, y=0)
            LtMenu = Label(CMenu, text="Maths PCHI", font=(Police, 40), fg=Color1, bg=Color2)
            LtMenu.place(x=375, y=100)
        
            F.protocol("WM_DELETE_WINDOW", lambda: FoFermetureMenu(1))
        
            if Exp == 0:
        
                F.update()
        
        
            if Exp == 1:
        
                F.mainloop()
        
        
            # Exp Checker
        
            if Exp == 0:
        
                print("Exp=0")
        
        
        FoMenu()
        
        
      3. @Pr.Witherfire

        Je pense que tu mélanges trop de choses à force de copier/coller, déjà self n'est pas un argument que l'on passe à une fonction (surtout si on ne l'utilise pas), de plus la notion de portée de variable t'es inconnu, ton script est à revoir...

        Ton traceback devrait t'aider à comprendre les erreurs.

    2. J'ai trouvé merci. En fait, il confondait OS et Pickle. Au revoir

      1. Ça c'est grave.... car tu n'as pas pris en compte nos conseils depuis le début...