将字符发送到subprocess.Popen

时间:2016-11-04 17:36:36

标签: python subprocess communicate omxplayer

我试图使用python脚本在我的rpi3上的命令行上控制omxplayer,我调用subprocess.Popen并控制它(例如播放/暂停,增加/减少音量等等。)I应该给stdin写一个字符(例如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 个答案:

答案 0 :(得分:0)

需要指明您传递的是输入变量,即

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