Bonjour,
mon problème se présente de la façon suivante: un programme A.py (s on
vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en
prenant ses données dans un fichier F.tex. Bien que mon code python soit
surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant
inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce
fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe
peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien
trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé
execfile et import mais j'ai des erreurs car le code de B.py fait appel
à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie?
Merci pour votre aide.
Etienne
http://perso.orange.fr/Etienne.Marache/latex/lbd/latexbd.html
Bonjour,
mon problème se présente de la façon suivante: un programme A.py (s on
vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en
prenant ses données dans un fichier F.tex. Bien que mon code python soit
surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant
inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce
fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe
peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien
trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé
execfile et import mais j'ai des erreurs car le code de B.py fait appel
à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie?
Merci pour votre aide.
Etienne
http://perso.orange.fr/Etienne.Marache/latex/lbd/latexbd.html
Bonjour,
mon problème se présente de la façon suivante: un programme A.py (s on
vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en
prenant ses données dans un fichier F.tex. Bien que mon code python soit
surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant
inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce
fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe
peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien
trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé
execfile et import mais j'ai des erreurs car le code de B.py fait appel
à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie?
Merci pour votre aide.
Etienne
http://perso.orange.fr/Etienne.Marache/latex/lbd/latexbd.html
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien
sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un
nom de fichier quelqueconque.
Note : il est préférable d'utiliser la forme :
execfile(cheminfichier, globals(), globals())
qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans
une chaîne de caractères, puis on va l'exécuter.
Avantage, on peut modifier le chaîne en mémoire, et la réexécuter.
Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec
Comme précédemment, on met le code-source dans une chaîne. Mais, on
force la compilation par Python, ce qui retourne un objet-code, que
l'on peut exécuter. Exemple :
import sys
try:
ccod=compile(chainesource,'mon_code_source:','exec')
flagcompile=True
except:
print "Erreur de compilation"
flagcompileúlse
if flagcompile==True:
try:
exec(ccod,globals(),globals())
except:
tb=sys.exc_info()[2] #traceback
print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un
contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien
sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un
nom de fichier quelqueconque.
Note : il est préférable d'utiliser la forme :
execfile(cheminfichier, globals(), globals())
qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans
une chaîne de caractères, puis on va l'exécuter.
Avantage, on peut modifier le chaîne en mémoire, et la réexécuter.
Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec
Comme précédemment, on met le code-source dans une chaîne. Mais, on
force la compilation par Python, ce qui retourne un objet-code, que
l'on peut exécuter. Exemple :
import sys
try:
ccod=compile(chainesource,'mon_code_source:','exec')
flagcompile=True
except:
print "Erreur de compilation"
flagcompileúlse
if flagcompile==True:
try:
exec(ccod,globals(),globals())
except:
tb=sys.exc_info()[2] #traceback
print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un
contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien
sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un
nom de fichier quelqueconque.
Note : il est préférable d'utiliser la forme :
execfile(cheminfichier, globals(), globals())
qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans
une chaîne de caractères, puis on va l'exécuter.
Avantage, on peut modifier le chaîne en mémoire, et la réexécuter.
Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec
Comme précédemment, on met le code-source dans une chaîne. Mais, on
force la compilation par Python, ce qui retourne un objet-code, que
l'on peut exécuter. Exemple :
import sys
try:
ccod=compile(chainesource,'mon_code_source:','exec')
flagcompile=True
except:
print "Erreur de compilation"
flagcompileúlse
if flagcompile==True:
try:
exec(ccod,globals(),globals())
except:
tb=sys.exc_info()[2] #traceback
print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un
contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Y a-t-il une limite à la longueur de la chaîne?
Y a-t-il une limite à la longueur de la chaîne?
Y a-t-il une limite à la longueur de la chaîne?
Re !Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand
même 10 millions de caractères ! En pratique, je dépasse rarement 30
ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes
font entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à
partir d'autres applications/langages, via un serveur COM en Python.
Je me suis un peu plus intéressé aux performances. Ainsi, ça
fonctionne avec plusieurs milliers d'appels par secondes, mais, pour
10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à
intégrer développement et application, ce va permettre de modifier des
(conception d') écrans, sans sortir de l'application, mais nécessite
que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous
envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
Pour le traceback, je n'ai pas précisé, mais il faut un
import traceback
préalable...
Re !
Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand
même 10 millions de caractères ! En pratique, je dépasse rarement 30
ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes
font entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à
partir d'autres applications/langages, via un serveur COM en Python.
Je me suis un peu plus intéressé aux performances. Ainsi, ça
fonctionne avec plusieurs milliers d'appels par secondes, mais, pour
10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à
intégrer développement et application, ce va permettre de modifier des
(conception d') écrans, sans sortir de l'application, mais nécessite
que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous
envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
Pour le traceback, je n'ai pas précisé, mais il faut un
import traceback
préalable...
Re !Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand
même 10 millions de caractères ! En pratique, je dépasse rarement 30
ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes
font entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à
partir d'autres applications/langages, via un serveur COM en Python.
Je me suis un peu plus intéressé aux performances. Ainsi, ça
fonctionne avec plusieurs milliers d'appels par secondes, mais, pour
10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à
intégrer développement et application, ce va permettre de modifier des
(conception d') écrans, sans sortir de l'application, mais nécessite
que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous
envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
Pour le traceback, je n'ai pas précisé, mais il faut un
import traceback
préalable...
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Etienne Marache wrote:Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il
en a d'ailleurs fait une page ici:
http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans
vos problématiques.
Etienne Marache wrote:
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il
en a d'ailleurs fait une page ici:
http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans
vos problématiques.
Etienne Marache wrote:Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il
en a d'ailleurs fait une page ici:
http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans
vos problématiques.
Quant à la liste, aurais-tu un lien pour les archives?
Quant à la liste, aurais-tu un lien pour les archives?
Quant à la liste, aurais-tu un lien pour les archives?
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste:
https://www.aful.org/wws/info/python
Et celui vers les archives:
https://www.aful.org/wws/arc/python
Le post de Gaël:
https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste:
https://www.aful.org/wws/info/python
Et celui vers les archives:
https://www.aful.org/wws/arc/python
Le post de Gaël:
https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste:
https://www.aful.org/wws/info/python
Et celui vers les archives:
https://www.aful.org/wws/arc/python
Le post de Gaël:
https://www.aful.org/wws/arc/python/2006-06/msg00006.html