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 :

lecture de fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut lecture de fichier
    je veux faire une fonction remplir qui ouvre un fichier et on recopie les lignes que je veux pour les mettre dans des champs d'entrée.
    j'ai essayé plusieurs methodes mais ça ne marche pas , ça me ne recopie pas la bonne ligne.
    voiçi un bout de mon code:
    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
    30
    31
    32
    33
    def remplir(self):
    		name = askopenfilename(filetypes = [("all","*"),("ofeli","*.dat")])
    		if name:
    			try:
    				fichier = open(name,"r")
    			except IOError:
    				    print "Error this file can not be opened"
    			else:
    					#invent=['#Param','Proj','Output','Plot','#Voltage Flag','Intpar','#angular Frequency','Doublepar','#Voltage','Complexpar','MeshFile','AuxFile','EOF']
    					#for a in invent:
    						#if a[0]!='#':
    							#val=fichier.readline()
    							#self.a.set(val)
    					a=fichier.readline()
    					if a[0] !='#'
    						self.fichname.set(a)
    					    b=fichier.readline()
    						if b[0]='P'
    					       self.output.set(b)
    					#c=fichier.read()
    					#self.plot.set(c)
    					#d=fichier.read()
    					#self.intpar.set(d)
    					#e=fichier.read()
    					#self.doublepar.set(e)
    					#f=fichier.read()
    					#self.complexpar(f)
    					#g=fichier.read()
    					#self.meshfile.set(g)
    					#h=fichier.read(s)
    					#self.auxfile.set(h)
    		else:
    				print "no file selected!"
    et ça c'est le fichier que je veux ouvrir par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #PARAM!
    Proj        proj
    Output         1
    Plot           1
    # Voltage flag
    IntPar         1    
    # Angular Frequency
    DoublePar     10
    # Voltage
    ComplexPar    10  0
    MeshFile     proj.m0
    AuxFile      proj.m1
    EOF
    donc je veux recopier par exemple(proj,1 ,1 ,1, 10, 10, 0....)

    Merci bcp pour votre aide

  2. #2
    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,

    Ce n'est pas facile de travailler sur ton code parce que tu n'en donnes qu'un petit bout, mais voici ce que je te propose. C'est suffisamment détaillé pour que tu puisses t'en inspirer.

    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
    30
    31
    32
    33
    34
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    def remplir(name):
        if name:
            try:
                fichier = open(name,"r")
            except IOError:
                print "Error this file can not be opened"
            else:
                # obtenir le contenu du fichier sous forme d'une liste de lignes
                L=fichier.readlines()
                # ne pas oublier de fermer le fichier ouvert
                fichier.close()
                print L
                print
                # retirer les caractères de fin de ligne '\r' et/ou '\n'
                L=[x.rstrip('\r\n') for x in L]
                print L
                print
                # transformer chaque ligne en sous-liste [clé, valeur]
                L=[x.split() for x in L]
                print L
                print
                # éliminer la 1ère ligne (#PARAM!) et la dernière (EOF):
                L=L[1:-1]
                return L
        else:
            print "no file selected!"
     
    L=remplir("config")
    print L
    print
    Ce qui donne avec ton fichier exemple (appelé ici "config"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['Proj', 'proj'], ['Output', '1'], ['Plot', '1'], ['#', 'Voltage', 'flag'], ['IntPar', '1'], ['#', 'Angular', 'Frequency'], ['DoublePar', '10'], ['#', 'Voltage'], ['ComplexPar', '10', '0'], ['MeshFile', 'proj.m0'], ['AuxFile', 'proj.m1']]
    Tu peux encore supprimer les clés pour n'avoir que les valeurs:

    Ce qui donnera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['proj'], ['1'], ['1'], ['Voltage', 'flag'], ['1'], ['Angular', 'Frequency'], ['10'], ['Voltage'], ['10', '0'], ['proj.m0'], ['proj.m1']]
    D'une manière générale, Python est très doué pour traiter des listes.

    Tyrtamos

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut explication
    Merci bcp pour ton aide .
    Mais en fait moi je veux supprimer toute les lignes qui commencent par un '#'.
    pour l'instant j'arrive juste à supprimer la première et dernière ligne.
    si tu pouvais m'expliquer encore comment je peux faire pour choisir els ligens que je veux supprimer.
    merci encore

  4. #4
    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
    Juste avant la supression de la 1ère ligne (#PARAM) et de la dernière (EOF), on a ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L=[['#PARAM!'], ['Proj', 'proj'], ['Output', '1'], ['Plot', '1'], ['#', 'Voltage', 'flag'], ['IntPar', '1'], ['#', 'Angular', 'Frequency'], ['DoublePar', '10'], ['#', 'Voltage'], ['ComplexPar', '10', '0'], ['MeshFile', 'proj.m0'], ['AuxFile', 'proj.m1'], ['EOF']]
    Alors, tu appliques cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    R = [x for x in L if x[0][0]!="#"][0:-1]
    Et cela donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['Proj', 'proj'], ['Output', '1'], ['Plot', '1'], ['IntPar', '1'], ['DoublePar', '10'], ['ComplexPar', '10', '0'], ['MeshFile', 'proj.m0'], ['AuxFile', 'proj.m1']]
    La formule utilisée s'appuie sur les "list comprehensions" ("compréhensions de liste?") de Python.

    Tyrtamos

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut merci
    Merci bcp.
    j'ai essayé et ça marche.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut autre question
    comment je peux faire pour recuperer la valeur de chaque cle de ma liste.
    j'ai besoin de les afficher sur des champs Entry.

    Merci encore

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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