Отправить символ в подпроцесс. Открыть

Я пытаюсь управлять omxplayer в командной строке на моем rpi3, используя скрипт на python, я вызываю subprocess.Popen и для управления им (например, воспроизведение / пауза, увеличение / уменьшение громкости и т. Д.), Я должен написать символ для стандартный (например, p, +/- и т. д.), символ передается в send_signal как переменный текст, используя связь, которую я не могу контролировать, есть ли лучший способ?

РЕДАКТИРОВАТЬ: также player.stdin.write(текст); player.stdin.flush() не работает.

def start_music():
    player = subprocess.Popen(['omxplayer', songs[0]], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
    return player

def send_signal(player, text):
    player.communicate(text.encode('utf-8'))
    player.stdin.close()

при попытке с помощью команды cat -e вместо omxplayer вы получите:

why_dont_you work
test_input
test_input$
test_input2
test_input2$
a
a$

обратите внимание, что первая строка как-то не отображается снова

1 ответ

Нужно указать, что вы передаете входную переменную, т.е.

def send_signal(player, text):
    player.communicate(input=text.encode('utf-8'))
    player.stdin.close()
Другие вопросы по тегам