如何使用键输入连续控制Python脚本?

如何使用键输入连续控制Python脚本?,python,input,keyboard,raspberry-pi,robotics,Python,Input,Keyboard,Raspberry Pi,Robotics,我创建了一个Python脚本,可以从管道(名为pipe1)获取命令。您可以在上找到脚本。 我用另一个脚本测试了脚本: import sys fw = open("pipe1", "w" ) fw.write('fd\n') fw.close() 它成功了 现在我想用另一个Python脚本来控制脚本,如果我按下w,a,s,d或p并显示我按下的键,它就可以在管道中写入 在这个例子中,我只想打印我按下的键。稍后,我将添加fw.write命令,以便在管道中写入,我之前测试过: def key_in

我创建了一个Python脚本,可以从管道(名为pipe1)获取命令。您可以在上找到脚本。
我用另一个脚本测试了脚本:

import sys

fw = open("pipe1", "w" )

fw.write('fd\n')
fw.close()
它成功了

现在我想用另一个Python脚本来控制脚本,如果我按下
w
a
s
d
p
并显示我按下的键,它就可以在管道中写入

在这个例子中,我只想打印我按下的键。稍后,我将添加
fw.write
命令,以便在管道中写入,我之前测试过:

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')
我的问题是,我编写的脚本(并使用stackoverflow成员进行了改进)在打开时立即关闭


有人能告诉我为什么,以及我如何修复它,使脚本一直保持打开状态,直到我用Ctrl+c中断它吗?

编辑:这个答案依赖于安装readchar模块。您可以通过pip:
pip install readchar
安装它

您试图使用的代码没有任何功能:您只定义了一个函数,但从不调用它。除此之外,它还包含缩进错误

与您试图实现的目标大致相同,但以点作为完成键:

import readchar

while True:
    key = readchar.readkey()
    key = key.lower()
    if key in ('wsadqe'):
        print 'Key:', key
    elif key == 'p':
        print "stop"

    sleep_time = 0.030

    if key == '.':
        print "finished"
        break

key\u press
从何而来?。while循环和in
key\u inp
函数中的情况是否相同?您提供的代码位示例中有一个未使用的局部变量,后来是一个未分配的局部变量。你能用你正在尝试使用的实际示例脚本进行编辑吗?