Python: vérifier une entrée
koriolis
-
loveparade Messages postés 515 Statut Membre -
loveparade Messages postés 515 Statut Membre -
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 !
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 !
3 réponses
-
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?
-
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...
-
-
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.
-
N'oublies pas de mettre le topique en "résolu" pour les autres membres, merci.