Page 1 sur 1

getch pour python

Posté : jeu. 16 févr. 2017 15:33
par NestorDuc
Bonjour,

Je souhaite récupérer la touche appuyée du clavier à la volée, sans appuyer la touche entrée et afficher uniquement la touche significative d'appuyée. Ceci dans une console SSH.

En bidouillant j'arrive à peu près à mes fins, sauf que je n'arrive pas à supprimer les "echo" dans le fichier ".sh".
Avez-vous une solution, merci.

Code : Tout sélectionner

Getch.sh ------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo -n ""            # obligatoire sinon plantage. -n pas de retour à la ligne
read -s -n1 -t0.5     # -s pas d'echo -n1 un seul caractere -t attendre 0.5 seconde
echo -n ""
car="$REPLY"
echo "$car" > rep.txt # met cela dans un fichier car sait pas transferer la reponse autrement

Getch.py ------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf8 -*- 
import os

def getch():
    os.system("bash getch.sh ")  
    # pas trouve comment tranferer une variable autrement
    fichier = open("rep.txt", "r")
    rep = fichier.read()
    fichier.close
    touche = rep[0:1]
    return touche

stop = ""
while stop <>"q":
    touche = getch()
    if touche == "q":
        stop = "q"
    else:
        if touche <> "":
        print (touche)
(J'ai pas trouvé comment conserver les indentations :oops: )

Re: getch pour python

Posté : jeu. 16 févr. 2017 16:08
par dyox
Bonjour,

Si c'est pour masquer l'affichage des echo, il faut rediriger la sortie avec "> /dev/null"

Re: getch pour python

Posté : jeu. 16 févr. 2017 16:45
par NestorDuc
Merci pour votre réponse,

OK pour >/dev/null, mais cela n'a pas d'effet sur la fonction read.

[code]
#!/usr/bin/env python
# -*- coding: utf8 -*-
import os

stop = ""
while stop <>"q":
touche = os.system("read -s -p -n1 -t0.5 >/dev/null")
if touche == "q":
stop = "q"
else:
if touche <> "":
print (touche)
[/code]

Re: getch pour python  [RESOLU]

Posté : jeu. 16 févr. 2017 16:52
par dyox
Pour le transfère de variables,regardez sur http://www.framboise314.fr/une-interfac ... pberry-pi/ et le pdf raspberry (page 31) dans les sources (avant dernier).
Il arrive à faire passer des arguments avec la librairie sys entre python et php.

Re: getch pour python

Posté : mar. 21 févr. 2017 21:30
par NestorDuc
Merci pour l'idée du stockage sur un RamDisk. Pratique pour mettre les Log de mises au point.
A bientôt
ND