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 :

TypeError: 'file' object is not callable


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut TypeError: 'file' object is not callable
    Bonjour,

    Mon probleme est que je souhaite réutiliser des variables enregistrés dans un fichier mais je reçoi comme erreur: TypeError: 'file' object is not callable

    voila le code d'enregistrement des variables dans le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    f=open("resultat.txt","a")
    pickle.dump((WI,W,Win,Wout,MUteach,MYteach,MErreurT,MErreurTest),f)
    f.close()
    et pour l'upload des données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    f = open("resultat.txt","r")
    WI,W,Win,Wout,MUteach,MYteach,MErreurT,MErreurTest = pickle.load(f)
    f.close()
    Uteach = matrix(MUteach[1,:],(1,L))
    Yteach = matrix(MYteach[1,:],(1,M))
    Xr,Y = outputVector(Uteach,W,Win,Wout,n,M,N) #l'erreur est ici
    est ce qu'il ya quelqu'un qui peut m'aider?

    merci d'avance.

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    tu as fait une erreur tout bête. Il faut remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = open("resultat.txt","r")
    WI,W,Win,Wout,MUteach,MYteach,MErreurT,MErreurTest = pickle.load(f)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WI,W,Win,Wout,MUteach,MYteach,MErreurT,MErreurTest = pickle.load("resultat.txt")
    Cela devrait résoudre le blocage.

    PS : ton code n'est pas trop propre. Si c'est pour un usage ponctuel, pourquoi pas. Maintenant si cela s'inscrit dans un projet à long terme, peut-être faut-il revoir cela.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Euh je ne sais pas rambc, pickle.load prend un file object (ou du moins un objet qui possède les méthodes read et readline) en argument et pas un string, il me semble.

    Si l'erreur se produit à l'endroit indiqué et pas dans la fonction outputVector, ne serais-ce pas parce que outputVector est un fichier et pas une fonction ?

  4. #4
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    pickle.load prend un chemin de fichier. C'est comme cela que je l'utilise. Je n'ai pas eu de souci jusqu'à maintenant.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Pas en Python 2.6 en tout cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> x = pickle.load("c:\\tmp\\test.txt")
    Traceback (most recent call last):
    [...]
    AttributeError: 'str' object has no attribute 'readline'

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Au temps pour moi... Je suis sous Python 3.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponses. En fait c'est un code temporaire et je suis débutante avec python

    J'ai essayé votre solution rambc mais il m'affiche la meme erreur que dividee: AttributeError: 'str' object has no attribute 'readline'
    donc aparament il faut ouvrir le fichier en lecture avant de faire un load des données.

    sinon, concernant la fonction "outputVector", je suis sure que l'erreur n'y est pas puisqu'elle fonctionne normallement. en fait, mon programme est divisé en 2 parties: la premiere cherche des valeurs des variables WI, W, Win, Wout, MUteach, MYteach, MErreurT, MErreurTest et les enregistre dans le fichier "resultat.txt". et la 2eme partie récupere les variables enregistrées et refait presque le même calcul de la premiere partie. et la fonction "outputVector" fonctionne bien dans la 1ere partie.

    voila la fonction outputVector:

    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
     
    # output vector function
    def outputVector(Uteach,W,Win,Wout,n,M,N):
            #initialisation of the reservoir neurons
            X=matrix(0,(1,N))
            #reservoir stabilisation
            X=resStab(X,W,Uteach,Win)
            #applying the activation function on the reservoir
            xr=[]
            for i in range(shape(X)[1]):
                    e=X[i]
                    fe=f(e)
                    xr.append(fe)
            Xr = matrix(xr,(1,N))
            #output vector
            yi = Xr*Wout
            Y=[]
            for i in range(shape(yi)[1]):
                    e=yi[i]
                    ge=g(e)
                    Y.append(ge)
            return (Xr,Y)
    voila, merci encore.

  8. #8
    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

    et la 2eme partie récupere les variables enregistrées et refait presque le même calcul de la premiere partie. et la fonction "outputVector" fonctionne bien dans la 1ere partie
    Python est un langage dynamique: rien ne dit que vous n'avez pas remplacé (sans le savoir) outputVector par autre chose que ce qu'il était en 1.

    Comme vous ne nous donnez pas grand chose qui permette de reproduire quoi que ce soit, il vous reste a vous assurer qu'outputVector est bien ce que vous croyez. du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    f = open("resultat.txt","r")
    WI,W,Win,Wout,MUteach,MYteach,MErreurT,MErreurTest = pickle.load(f)
    f.close()
    Uteach = matrix(MUteach[1,:],(1,L))
    Yteach = matrix(MYteach[1,:],(1,M))
    print 'type(outputVector)', type(outputVector)
    Xr,Y = outputVector(Uteach,W,Win,Wout,n,M,N) #l'erreur est ici
    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [THREAD] TypeError: NoneType' object is not callable
    Par flolebreton dans le forum Général Python
    Réponses: 2
    Dernier message: 24/06/2013, 14h49
  2. Réponses: 2
    Dernier message: 01/04/2011, 09h20
  3. object is not callable
    Par rezguiinfo dans le forum Général Python
    Réponses: 6
    Dernier message: 30/01/2011, 13h43
  4. "'int' object is not callable"
    Par dingoth dans le forum Général Python
    Réponses: 2
    Dernier message: 22/12/2010, 17h38
  5. TypeError: 'int' object is not iterable
    Par manaliac dans le forum Général Python
    Réponses: 15
    Dernier message: 29/06/2010, 11h24

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