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 :

Donnée Fichier et Affichage via LineEdit


Sujet :

Python

  1. #21
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 107
    Par défaut
    En effet bien vu denis2

    Edit : Un inconvénient tout de même, si plus d'espace entre le ':' et la chaine et le nombre, on est chocolat

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    effectiement fred1599
    je me base sur l'exemple donnés, mais mais dans le cas soulignés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def LoadFile(self):
        with open("SOCRATES_1_GeneralSettings.txt", 'r') as f:
            return  [line[line.index(':')+1:].strip() for line in f.readlines()]
    mais peut-être y-a-t-il d'autre cas que vous voyez mieux que moi par votre experience professionel.

  3. #23
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par fred1599 Voir le message
    En effet bien vu denis2

    Edit : Un inconvénient tout de même, si plus d'espace entre le ':' et la chaine et le nombre, on est chocolat
    Désolé pour cette intrusion mais je n'ai pas compris l'edit.
    Quelque soit le nombre d'espace .split() s'en occupe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> line = "    NoOfTurboComponents      :   20   "
    >>> line.split()
    ['NoOfTurboComponents', ':', '20']
    (Ici même avec une tabulation)

    Je trouve le fait de prendre le dernier élément de la liste retournée par .split() bien plus lisible que de s'amuser avec .strip(), l'index, etc...

    @+

  4. #24
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 107
    Par défaut
    Désolé pour cette intrusion mais je n'ai pas compris l'edit.
    Bonjour PauseKawa, je disais plu et pas plusse d'espace

    exemple : NoOfTurboComponents:20

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def LoadFile(self):
        with open("SOCRATES_1_GeneralSettings.txt", 'r') as f:
            return  [line[line.index(':')+1:].strip() for line in f.readlines()]
    Le problème de ce code c'est s'il y a 1 ou plusieurs retour à la ligne à la suite du fichier

    Traceback (most recent call last):
    File "face.py", line 5, in <module>
    print LoadFile('text.txt')
    File "face.py", line 3, in LoadFile
    return [line[line.index(':')+1:].strip() for line in f.readlines()]
    ValueError: substring not found

  5. #25
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Je n'avais pas vu la négation...

    De toute manière retourner une list comprehension cela fait très Python mais limite les possibilités de test.

    Voici toutefois pour le code donné par denis2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            return [line[line.index(':')+1:].strip() for line in f.readlines()
                    if len(line) > 1]
    SOCRATES_1_GeneralSettings.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    NoOfTurboComponents :     2
     
     
    NoOfStreamlines:3
     
    NoOfBoundaryPoints        :            4                
    NoOfTimeSteps :        20
    Sortie
    Mais bon... Cela commence à faire mal aux yeux non ?
    Si le format de fichier est fixe autant utiliser le dernier élément de la list (voir utiliser .pop()).

    @+

  6. #26
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 107
    Par défaut
    Oui PauseKawa, une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [line[line.index(':')+1:].strip() for line in f.readlines()
                    if ':' in line]
    me paraît plus rapide, mais j'ai pas fais de mesures temporelles.

    D'ailleurs je ne sais pas laquelle de ma solution ou celle de Denis est la plus rapide (flemme), pour une longueur de fichier si faible, c'est peu significatif.

    Si le format de fichier est fixe autant utiliser le dernier élément de la list (voir utiliser .pop()).
    Il y a en effet plein d'autres solutions, c'est pour cela que j'adore python

    Finalement j'ai fais le test :

    Ta modification PauseKawa est bien plus lente, et rend le code à une vitesse équivalent à mon code (1 seconde moins rapide) sur 1 Million de répétition.

    Par contre si on modifie avec if ':' in line, on est bien plus rapide (4 secondes plus vite que mon code)

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2014, 16h35
  2. Réponses: 2
    Dernier message: 21/03/2013, 10h50
  3. Réponses: 1
    Dernier message: 18/08/2011, 15h08
  4. [XL-2007] Extraire données de plusieur fichiers .xls selectionné via un dossier
    Par wisemanvsfatboy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/05/2009, 16h34
  5. Réponses: 13
    Dernier message: 02/08/2008, 18h41

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