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 à l'ouverture d'un ficher


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par défaut erreur à l'ouverture d'un ficher
    bonjour,
    afin de charger la configuration (chemins d'accès, nom des bases de données, etc ...) pour mon programme, toutes ces information sont placées dans un fichier txt qui se trouve dans le même répertoire que le programme.

    la fenêtre principale de mon programme est contenue dans une classe. je lui ai donc fait une petite méthode .loadConfig pour qu'a chaque démarrage il lise le fichier et mémorise les paramètres.

    or, la première ligne de cette méthode commence par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich=open('monFichierConfig','r')
    lorsque j'essaie le code dans un petit fichier séparé, pas de problème (sans classe, sous forme de quelques lignes de commandes toutes bêtes). mais lorsque j'exécute mon programme et que je lui fait appliquer la méthode self.loadConfig(), python me renvoie le message suivant :

    fich=open('gaiaconfig.ga','r')
    TypeError: an integer is required


    et là il dit qu'il comprend pas. qu'elqu'un pourait m'aider ?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Tu as probablement un problème d'espace de noms, la fonction open standard étant remplacée par une autre.

    Dans ton module, fais-tu un import from monmodule import *?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par défaut
    ben, j'y ai pensé aussi, mais dans mes modules perso, je n'importe que des classes avec des méthodes, ça ne peu donc pas venir de là. et sinon, j'import tout Tkinter et j'import getcwd et chdir du module OS. c'est tout.

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    si tu fais:?

  5. #5
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    a priori, le open que tu utilises est celui du module os ici
    http://python.developpez.com/faq/?pa...ites#GenImport

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai essayé ce que je crois avoir compris de ce que tu a fait, et ça marche chez moi:

    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
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import Tkinter
     
    class Application(Tkinter.Frame):
     
        def __init__(self, master=None):
            Tkinter.Frame.__init__(self, master)
            self.loadConfig()
     
        def loadConfig(self):
            fich=open('config.txt','r')
            self.x=fich.readlines()
            fich.close()
            print self.x
     
    if __name__ == "__main__":
        fen=Tkinter.Tk()
        app=Application(fen)
        fen.mainloop()
    Regarde s'il y a des différences avec ton code.

    Tyrtamos

  7. #7
    Membre chevronné Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 407
    Par défaut
    tu peux aussi forcer python à utiliser le open de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import __builtin__
    __builtin__.open()
    sinon si tu veux savoir quel open est utilisé tu peux faire help(open), la première ligne doit indiquer le module d'origine

  8. #8
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par défaut
    alors, quand je fait ... print open
    il me renvoie un truc du genre <builtin fonction etc...>

    je ne pense pas que ce soit le open du module OS puisque je n'importe pas tout ce module je ne fait que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from os import chdir
    from os import getcwd
    par rapport à la réponse de tyrtamos, je ne vois pas de grande différence entre ton code et le miens, excepté que tu ouvre le fichier dans une variable d'instance (self.x=open(... ) ) alors que je le fait avec une variable locale (a=open(...) ). je ne sais pas si cela a une grande importance.

    par contre, en forçant avec import __builtin__ et en utilisant __builtin__.open , ça marche très bien. allez comprendre pourquoi.

    j'ai bien reverifié, dans aucun de mes modules je n'ai de méthodes ou de fonctions portant le nom open. si le problème est résolue, je ne comprend toujours pas d'ou celà viens. je laisse donc le sujet ouvert pour avoir vos avis.

  9. #9
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par gwenc_hlan Voir le message
    par rapport à la réponse de tyrtamos, je ne vois pas de grande différence entre ton code et le miens, excepté que tu ouvre le fichier dans une variable d'instance (self.x=open(... ) ) alors que je le fait avec une variable locale (a=open(...) ). je ne sais pas si cela a une grande importance.
    Tout dépend de ce que tu veux faire avec. La variable locale sera détruite à la fin de l'exécution de la méthode, alors que la variable préfixée par self sera globale pour l'instance de classe.

    As-tu essayé mon code et si oui, est-ce qu'il fonctionne chez toi? S'il ne fonctionne pas, cherche un éventuel pb de configuration de ton Python.

    Tyrtamos

  10. #10
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par défaut
    bizzard, ton code marche bien.

    pourtant, cette erreur ne se produit pas dans d'autres scripts que j'ai fait et qui ne concerne pas du tout ce programme.

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

Discussions similaires

  1. erreur à l'ouverture de mon fichier xml
    Par 2tsiris dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 03/04/2006, 13h10
  2. [WD9] Erreur d'ouverture de projet
    Par Romanops dans le forum WinDev
    Réponses: 5
    Dernier message: 21/03/2006, 11h03
  3. Erreur d'ouverture de fichier :s
    Par NeuroGen dans le forum Général Python
    Réponses: 3
    Dernier message: 15/03/2006, 12h51
  4. [Adobe Acrobat] Erreur d'ouverture pdf v 6.0 avec Reader 4.0
    Par batou22003 dans le forum Autres langages
    Réponses: 3
    Dernier message: 20/12/2005, 17h43
  5. Erreur à l'ouverture d'une requete
    Par yoyo30 dans le forum Access
    Réponses: 3
    Dernier message: 06/10/2005, 07h58

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