Python: vérifier une entrée

Fermé
koriolis - 1 févr. 2009 à 15:48
loveparade Messages postés 506 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 14 mai 2011 - 1 févr. 2009 à 19:50
Bonjour à la communauté,

Je développe en python et je cherche à:

enter une commande >> vérifier si elle existe dans une chaine >> l'exécuter si oui / dire qu'elle n' n'existe pas sinon.

J'en suis à ça:

chaine="liste des commandes séparés par un "/" "
def entrercom():
commande=input()
for commande in chaine:
commande()
else:
print "commande invalide"
entrercom()

le hic, c'est que si j'entre une valeur qui n'éxiste pas, cela m'offre un joli " name trucmachin is not definited ", alors que j'aimerais bien afficher un beau " commande inconnue... " et revenir au commande=input().

Auriez-vous une idée ? Merci d'avance !
A voir également:

3 réponses

loveparade Messages postés 506 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 14 mai 2011 60
1 févr. 2009 à 18:25
from sys import stdout
chaine = "commande1 / commande2 ..."
req = raw_input("Commande a tester\n")
if req in chaine:
        exec req+"()"



Exemple:

from sys import stdout
def ech():
        stdout.write("ok"\n)

ch = "ech ebh"

while 1:
        a = "ech"
        if a in ch:
                exec a+"()"
                break
        else:
                stdout.write("Commande inconnue\n")


mais bon, c'est pas très esthétique. C'est pour quoi faire au juste?
0
Merci pour ta réponse :)

Je vais de ce pas adapter (maintenant que c'est compris ) ce code à mon projet...

En fait, je cherche par simple amusement à faire une sorte de console type dos (Windows) ou shell (linux)...
Pour l'heure, mon programme se décompose comme ceci:

l'interface ou l'on écrit la commande >> une fonction exécute la commande spécifique >> retour à l'interface ou l'on écrit ladite commande...

Le hic, c'est que si j'ai déjà pas mal de fonctions que j'ai développé ( listing des dossier/fichiers, création/édition de dossier, documents texte, contrôle de l'ordinateur ( éteindre, mettre en veille... (uniquement sous windows, pour le coup)) et autres... ), il y a toujours le risque que l'utilisateur se trompe dans la syntaxe de la commande... d'où ma question ^^

Sinon, je ne fais vraiment ça que par pur amusement...
0
loveparade Messages postés 506 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 14 mai 2011 60
1 févr. 2009 à 19:02
Ok après tu peux les mettres dans un dic par exemple
genre :
def dir_function(): ...
def del_function(): ...

commande = dict()
commande['dir'] = dir_function
commande['dir'] = del_function

cmd = "dir"
if commande.has_key(cmd):
        commande[cmd]()


Enfin a toi d'adapter, car de plus, le python est relativement simple. A plus tard.
0
Bonne idée ;)

Mais bon, pour l'instant, j'ai aussi d'autre projets "sur le feu". Mais je te remercie pour ton aide !

@ + ( je risque d'avoir encore d'autres questions c*n :D )

... mince, c'est vrai que ce serait pratique un dico pour ça... ^^
0
loveparade Messages postés 506 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 14 mai 2011 60
1 févr. 2009 à 19:50
N'oublies pas de mettre le topique en "résolu" pour les autres membres, merci.
0