如何通过按键输入连续控制 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 脚本控制脚本,如果我按 w
、a
、s
、[=,它可以写入管道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
我创建了一个 Python 脚本,它可以从管道(名为 pipe1)获取命令。您可以在 Pastebin.
上找到脚本
我用另一个脚本测试了脚本:
import sys
fw = open("pipe1", "w" )
fw.write('fd\n')
fw.close()
成功了。
现在我想用另一个 Python 脚本控制脚本,如果我按 w
、a
、s
、[=,它可以写入管道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