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
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part somme = eval("4 +3")
Quelles sont les expressions à évaluer ?
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.
Il ne s'agit pas d'expression à évaluer, mais de vrai lignes python qui définissent une procédure python.
Exemple :Merci
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)
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
avec ceci :
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
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")Mais, comme dit plus haut, cela implique que tu aies connaissance du nom de la fonction et de ses arguments.vincent@tiemoko:~/Bureau$ python readScript.py
455008xyNord
vincent@tiemoko:~/Bureau$
C'est génial, c'est exactement ce que je cherchais.
merci beaucoup
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager