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 :

executer du code python contenu dans une variable


Sujet :

Python

  1. #1
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut executer du code python contenu dans une variable
    Bonjour,
    Si une appli python recupère du code python d'un fichier texte ou d'une base de données, comment le déclarer et l'exécuter si c'est possible.
    merci

  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, on peut utiliser la fonction eval.

    Il faut faire tout de même attention avec cette fonction : je n'ai pas le temps là d'en dire plus mais je repasserais ce soir.

    Quelles sont les expressions à évaluer ?

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Sous quelle forme se présentera ce code dans le fichier texte ?

    Il peut être plus simple de le réécrire avec l'extension .py et puis de faire un import.

    L'import implique que tu en connaisses le contenu, classe principale ou fonctions, mais comme te le fait remarquer Rambc, tu es sensé savoir ce que fait un code avant de l'exécuter.

    De prime abord, je ne vois rien de compliqué à ta question, donnes-nous un exemple de texte contenant du code.

  4. #4
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Il ne s'agit pas d'expression à évaluer, mais de vrai lignes python qui définissent une procédure python.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def ConverLatitude(self, field=None):          
    	if string.count(field,'/') == 0:
    		return field
    	dlat,mlat,slat,h,lata, = string.split(field,'/')	
    	return "%s%s%s%s" % (dlat,mlat,slat,h,lata)
    Merci

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    C'était bien ce que j'avais compris, cependant ton exemple pose deux problèmes,
    d'abord le "self" et ensuite string nécessite un import dans ce code là.

    en modifiant ton exemple :

    texte.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def ConverLatitude(field=None):          
        if not '/' in field:
    	return field
        dlat,mlat,slat,h,lata, = field.split('/')	
        return "%s%s%s%s%s" % (dlat,mlat,slat,h,lata)  # il manquait un %s
    avec ceci :

    readScript.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    def read_write():
        with open("texte.txt", "r") as source:
            with open("texte.py", "w") as dest:
                for line in source.readlines():
                    dest.write(line)
     
    read_write()
    from texte import*
    print ConverLatitude("45/50/08/xy/Nord")
    vincent@tiemoko:~/Bureau$ python readScript.py

    455008xyNord
    vincent@tiemoko:~/Bureau$
    Mais, comme dit plus haut, cela implique que tu aies connaissance du nom de la fonction et de ses arguments.

  6. #6
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    C'est génial, c'est exactement ce que je cherchais.
    merci beaucoup

  7. #7
    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,
    2 remarques.
    - self: si la fonction n'est pas méthode d'une classe, c'est un paramètre comme un autre qu'il faudra 'initialiser' à l'appel de la fonction - l'interpréteur n'ira pas l'initialiser.
    - si le code est du "texte", la fonction 'exec' permet de le "compiler" dans le "module" courant - en héritant de son globals et autres import -.

    Inutile de prendre du texte, le transformer en .py pour faire un import, exec(f.read()) doit suffire... modulo que l'encoding soit correct.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Executer du code contenu dans une variable
    Par Fade2B dans le forum PL/SQL
    Réponses: 6
    Dernier message: 25/11/2009, 17h44
  2. Réponses: 7
    Dernier message: 11/03/2007, 09h35
  3. [MySQL] executer une commande php contenu dans une variable
    Par Stopher dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2006, 15h44
  4. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  5. Executer 1 script contenu dans une variable PHP
    Par emstar dans le forum Langage
    Réponses: 5
    Dernier message: 19/04/2006, 11h48

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