Я создал скрипт Python, который может принимать команды из канала (named pipe1). Я протестировал скрипт (я написал вручную в трубе в терминале), и он сработал.Как я могу управлять скриптом Python с ключевыми входами?
Теперь я хочу, чтобы контролировать сценарий с другим сценарием Python, который мог бы написать в трубе, если нажать w
, a
, s
или d
.
Вы можете найти скрипт на 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
Моя проблема в том, что я нигде не нашел кого-то с той же проблемой, как и я. Я открыт для альтернатив для этого примера скрипта.
Я upvoted, потому что вы ответили на вопрос предлагалось улучшение, но, возможно, вы могли бы отредактировать это, чтобы быть менее снисходительным/абразивным. Например, нет необходимости повторять слово «очень» во всех шапках и полужирным шрифтом три раза. То же самое с тремя вопросительными знаками, прежде чем предлагать улучшение. Это похоже на то, как вы думаете, что плакат является глупым, но ясно, что это всего лишь случай, когда кто-то является новичком в программировании/python. – skyler
@skyler: Ах, правильно. Ред. –
@ Кивен Гуан: Спасибо! – skyler