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 :

Question à propos de l'utilisation de exec


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    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
    Par défaut Question à propos de l'utilisation de exec
    Bonjour,
    je voudrais utiliser exec pour récupérer rapidement des infos contenues dans un fichier comme dans l'exemple simplifié ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec 'userOptions = {' + '"oo":"aa"' + '}'
    # userOptions est un objet Python obtenu sans effort.
    Est-ce une bonne pratique, ou mieux vaut-il parser le texte ' "oo":"aa" ', qui en pratique sera un morceau facile à repérer dans un fichier texte ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Ça veut dire quoi «récupérer» , please ?

  3. #3
    Membre éprouvé

    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
    Par défaut
    Il va falloir que je fasse un stage sur l'art de bien poser des questions...

    Concrétement, j'ai un fichier TXT du type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "couleur":"rouge"
    "taille":18
    Je récupère dans mon script Python chaque ligne du fichier TXT. Ensuite je les recolle en mettant des virgules, ce qui me donne une chaîne de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine ='"couleur":"rouge", "taille":18'
    Ensuite dans mon code Python j'utilise exec comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec 'dicoOptions = {' + maChaine + '}'
    Remarque :ceci équivaut à mettre directement dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dicoOptions = {"couleur":"rouge", "taille":18}
    Je peux alors utiliser le dictionnaire dans mon code Python.


    Ma question est la suivante. L'utilisation de exec est-elle "propre" ou non ?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    "couleur":"rouge"
    "taille":18
    C'est obligatoire? car sinon ça c'est mieux dans le fichier texte, il y aura moins de découpage

    couleur:rouge
    taille:18
    Sinon j'utiliserais readlines pour la lecture du fichier, puis la méthode split pour virer ":" et "\n".

    Tu auras une liste, et tu pourras ajouter tout ça dans ton dico

    un truc du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dico={}
    dico["couleur"]="rouge" # a remplacer par rapport aux index de ton tableau
    le exec par contre je ne vois toujours pas son intérêt, excuse moi, mais je ne comprend pas ce que tu veux faire avec.

  5. #5
    Membre éprouvé

    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
    Par défaut
    Ma question porte juste sur le exec. Pour le reste je sais faire.

    En fait, le format utilisé dans le fichier TXT est un moyen de stocker des données Python du type OPTIONS-UTILISATEUR au sein d'autres données non Python du type TEXTE-A-IMPRIMER.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    exec est utilisé pour exécuter une ou plusieurs instructions dans une chaine ou un fichier texte.

    Ce n'est pas le cas dans ton exemple.

    Se sont plus des arguments qu'une instruction.

    Dans ton cas, je ferais quelquechose comme ceci :

    Selon la complexité malheureuse de ton fichier texte avec ses ".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fichier=open("test.txt", "r")
    data=fichier.readlines()
    fichier.close()
     
    dico={}
     
    for ligne in data:
        ligne=ligne.split(":")
        lignes=ligne[1].split("\n")
        dico[ligne[0]]=lignes[0]
     
    print dico
    ou encore avec les ' en moins sur le résultat de ton dico en utilisant eval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fichier=open("test.txt", "r")
    data=fichier.readlines()
    fichier.close()
     
    dico={}
     
    for ligne in data:
        ligne=ligne.split(":")
        lignes=ligne[1].split("\n")
        dico[eval(ligne[0])]=eval(lignes[0])
     
    print dico
    donne le résultat de ton dico

    {'couleur': 'rouge', 'taille': 18}

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

Discussions similaires

  1. Question à propos de oShell.Exec
    Par jlachapelle dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/08/2008, 17h20
  2. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  3. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  4. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03
  5. Comment utiliser Site Exec sous FTP
    Par phig dans le forum Développement
    Réponses: 2
    Dernier message: 12/08/2003, 17h11

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