Python: vérifier une entrée

koriolis -  
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 !

3 réponses

  1. loveparade Messages postés 515 Statut Membre 60
     
    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
    1. koriolis
       
      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
  2. loveparade Messages postés 515 Statut Membre 60
     
    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
    1. koriolis
       
      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
  3. loveparade Messages postés 515 Statut Membre 60
     
    N'oublies pas de mettre le topique en "résolu" pour les autres membres, merci.
    0