Python: exec('x') => NameError: name 'x' is
Résolu/Fermé
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
-
28 janv. 2008 à 20:50
madprog - 3 mars 2009 à 14:24
madprog - 3 mars 2009 à 14:24
A voir également:
- Python: exec('x') => NameError: name 'x' is
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- [PyCharm] Pas d'interpréteur python ✓ - Forum Python
- Geometry dash python ✓ - Forum Python
9 réponses
mamiemando
Messages postés
33367
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 novembre 2024
7 801
29 janv. 2008 à 00:05
29 janv. 2008 à 00:05
C'est pas plutôt des "..." au lieu des '...' ?
http://diveintopython.adrahon.org/native_data_types/formatting_strings.html
Bonne chance
http://diveintopython.adrahon.org/native_data_types/formatting_strings.html
Bonne chance
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2008 à 00:38
29 janv. 2008 à 00:38
Ben le problème c'est que avec python une chaine en simple quote ou double quote c'est la même chose, j'arrive pas à savoir ce qui cloche dans son code :-(
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2008 à 00:42
29 janv. 2008 à 00:42
Ah mais si voilà: exec c'est fait pour executer du code python directement et non pas un fichier.
Si tu veux executer un fichier c'est execfile(nomfichier.py) qu'il faut utiliser.
exec "print machin"
Si tu veux executer un fichier c'est execfile(nomfichier.py) qu'il faut utiliser.
mamiemando
Messages postés
33367
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 novembre 2024
7 801
29 janv. 2008 à 10:06
29 janv. 2008 à 10:06
Je pense que exec ne fait pas ce que tu crois, à mon avis c'est plutôt :
Exemple
Bonne chance
import os os.system('configurations-calculees/'+type_jeu+'.py')
Exemple
(mando@aldur) (~) $ python Python 2.4.4 (#2, Jan 3 2008, 13:36:28) [GCC 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.system('/sbin/route -n') Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth3 0
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
30 janv. 2008 à 22:33
30 janv. 2008 à 22:33
Merci !
Effectivement ça semble fonctionner mieux avec execfile ou os.system (même si ce n'est pas encore parfait).
Cependant, je ne sais pas quel est le répertoire dans lequel je suis quand je veux exécuter le script, et j'aimerais pouvoir l'utiliser sous windows et Linux.
Est-ce qu'il y a un moyen de récupérer le chemin du répertoire d'exécution du script, et aussi de parcourir un chemin indépendemment du séparateur utilisé par le système (/ sous linux et \ sous windows) ?
--
Sylvain
Effectivement ça semble fonctionner mieux avec execfile ou os.system (même si ce n'est pas encore parfait).
Cependant, je ne sais pas quel est le répertoire dans lequel je suis quand je veux exécuter le script, et j'aimerais pouvoir l'utiliser sous windows et Linux.
Est-ce qu'il y a un moyen de récupérer le chemin du répertoire d'exécution du script, et aussi de parcourir un chemin indépendemment du séparateur utilisé par le système (/ sous linux et \ sous windows) ?
--
Sylvain
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
31 janv. 2008 à 00:11
31 janv. 2008 à 00:11
Cependant, je ne sais pas quel est le répertoire dans lequel je suis quand je veux exécuter le script
C'est la variable os.curdir
et aussi de parcourir un chemin indépendemment du séparateur utilisé par le système (/ sous linux et \ sous windows) ?
Prends le slash, ça marche sur les deux systemes.
C'est la variable os.curdir
et aussi de parcourir un chemin indépendemment du séparateur utilisé par le système (/ sous linux et \ sous windows) ?
Prends le slash, ça marche sur les deux systemes.
mamiemando
Messages postés
33367
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 novembre 2024
7 801
31 janv. 2008 à 00:50
31 janv. 2008 à 00:50
http://www.artofnet.com/index.asp?m=2&z=2&i=54
os.sep retourne le caractère qui désigne un séparateur de répertoire. Sylvain je veux bien t'aider mais prends au moins le temps au préalable de chercher un minimum sur google s'il te plaît.
Bonne chance
os.sep retourne le caractère qui désigne un séparateur de répertoire. Sylvain je veux bien t'aider mais prends au moins le temps au préalable de chercher un minimum sur google s'il te plaît.
Bonne chance
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
20 févr. 2008 à 19:58
20 févr. 2008 à 19:58
Je réponds tard à ce topic, désolé, mais je ne l'ai pas laissé tombé.
Merci donc à tous pour vos réponses.
Pour le moment, j'ai opté pour : execfile('./configurations-resolues/'+type_jeu+'.py')
et ça semble fonctionner sous Linux. Je n'ai pas encore testé sous Windows.
--
Sylvain
Merci donc à tous pour vos réponses.
Pour le moment, j'ai opté pour : execfile('./configurations-resolues/'+type_jeu+'.py')
et ça semble fonctionner sous Linux. Je n'ai pas encore testé sous Windows.
--
Sylvain
La solution est expliquée ici : http://www.python.org/doc/2.5.2/ref/exec.html
Et plus précisément, cette phrase : "The first expression should evaluate to either a string, an open file object, or a code object."
En français, ça nous donne : "La première expression devrait être évaluée soit à une chaîne de caractères, soit à un objet file ouvert, soit à un objet code".
Une chaîne de caractères sera exécutée directement (par exemple, print 'Hello' affichera Hello à l'écran).
Le contenu d'un fichier ouvert ou d'un objet code sera exécuté.
Une syntaxe correcte (et qui devrait fonctionner sur toutes les architectures) serait donc :
Et plus précisément, cette phrase : "The first expression should evaluate to either a string, an open file object, or a code object."
En français, ça nous donne : "La première expression devrait être évaluée soit à une chaîne de caractères, soit à un objet file ouvert, soit à un objet code".
Une chaîne de caractères sera exécutée directement (par exemple, print 'Hello' affichera Hello à l'écran).
Le contenu d'un fichier ouvert ou d'un objet code sera exécuté.
Une syntaxe correcte (et qui devrait fonctionner sur toutes les architectures) serait donc :
exec file('configurations-calculees/'+type_jeu+'.py')