我创建了一个Python脚本,可以从管道(名为pipe1)获取命令。我测试了脚本(我在终端的管道中手动编写)并且它有效。
现在我想用另一个Python脚本控制脚本,如果我按下w
,a
,s
或d
,可以写入管道。< / p>
您可以在Pastebin
上找到该脚本我开始使用这个脚本:
在这个例子中,我只想打印我按下的键。我稍后会添加echo ""
命令来写入管道,我之前测试过。
import time
import sys
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')
但我总是得到同样的错误:
File "key.py", line 12
if key_press.lower() == 'w':
^
IndentationError: expected an indented block
我的问题是我找不到像我一样有问题的人。 我打开了这个示例脚本的替代品。
答案 0 :(得分:2)
您的问题是关于缩进,在Python中非常重要:
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')
您也可以尝试以下代码,在这种情况下它会做同样的事情,但更简单:
def key_inp(event):
print 'Key:', event.char
key_press = event.char
sleep_time = 0.030
while True:
try:
if key_press.lower() == 'p':
print "stop"
# Do you also want exit here?
# If right, then add a `break` here.
else:
print key_press.lower()
except(KeyboardInterrupt):
print('Finished')
或者,如果您只想输入打印w
,s
,a
,d
,q
,e
如果输入不在该列表中(也不是p
),则不会打印任何内容。然后我建议使用如下列表:
def key_inp(event):
print 'Key:', event.char
key_press = event.char
sleep_time = 0.030
while True:
try:
if key_press.lower() in ['w', 's', 'a', 'd', 'q', 'e']:
print key_press.lower()
elif key_press.lower() == 'p':
print "stop"
except(KeyboardInterrupt):
print('Finished')
关于Python中的缩进,我发现this mail表示:
Python使用缩进来定义块。例如,要显示哪个 语句由受控制的
for
或if
语句控制 语句缩进。你的书应该谈谈这个。因此,在键入这些示例时,您需要在后面缩进行
for
,if
或while
。缩进可以是任何一致的空格。 四个空格是一个非常常见的缩进。