如何通过按键输入连续控制 Python 脚本?

How can I control a Python script continuously with key inputs?

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

import sys

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

fw.write('fd\n')
fw.close()

成功了。

现在我想用另一个 Python 脚本控制脚本,如果我按 was、[=,它可以写入管道16=] 或 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')

我的问题是,我编写的脚本(并通过 Whosebug 成员改进)在我打开它时立即关闭。

任何人都可以向我解释为什么,以及如何修复它以便脚本一直保持打开状态直到我用 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