Python: vérifier une entrée

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 !

3 réponses

  1. N'oublies pas de mettre le topique en "résolu" pour les autres membres, merci.
    1. 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.
      1. 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... ^^
    2. 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?
      1. 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...