J'ai créé un script Python qui peut prendre des commandes depuis un tube (nommé pipe1). Vous pouvez trouver le script sur Pastebin.
J'ai testé le script avec cet autre scénario:Comment puis-je contrôler un script Python en continu avec des entrées clés?
import sys
fw = open("pipe1", "w")
fw.write('fd\n')
fw.close()
et cela a fonctionné.
Maintenant, je veux contrôler le script avec un autre script Python, qui pourrait écrire dans le tuyau si je presse w
, a
, s
, d
ou p
et me afficher les touches, que je presse.
Dans cet exemple, je veux juste imprimer les touches sur lesquelles j'appuie. Je plus tard ajouter les fw.write
commandes à écrire dans la conduite, que je testé avant:
def key_inp(event):
print 'Key:', event.char
key_press = event.char
sleep_time = 0.030
while True:
try:
if key_press.lower() == 'w':
print "w"
elif key_press.lower() == 's':
print "s"
elif key_press.lower() == 'a':
print "a"
elif key_press.lower() == 'd':
print "d"
elif key_press.lower() == 'q':
print "q"
elif key_press.lower() == 'e':
print "e"
elif key_press.lower() == 'p':
print "stop"
except(KeyboardInterrupt):
print('Finished')
Mon problème est que le script que je l'ai écrit (et amélioré avec un membre stackoverflow) ferme immédiatement quand je l'ouvre. Est-ce que quelqu'un peut m'expliquer pourquoi, et comment je peux le réparer afin que le script reste ouvert tout le temps jusqu'à ce que je l'interrompe avec Ctrl + c?
Où 'key_press' vient .. Est-ce la même chose dans la boucle' while' et la fonction dans 'key_inp'? –
L'exemple de code que vous fournissez comporte une variable locale inutilisée et plus tard une variable locale non affectée. Pourriez-vous éditer avec l'exemple de script que vous essayez d'utiliser? – Uvar