我的问题是我想在后台运行mpg123并播放/暂停一个mp3文件。
我打开了这样的子流程:
player.stdin.write("s")
然而,当我尝试用
暂停mpg123时{{1}}
它只返回一个基于字符串长度的数字(在这种情况下:1)
答案 0 :(得分:1)
player = subprocess.Popen(["mplayer", "/music.mp3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
time.sleep(10)
player.stdin.write("pause")
player.stdin.flush()
答案 1 :(得分:0)
mpg123需要类似终端的标准输入,PIPE不会起作用。试一试:
import os
import pty
import subprocess
import time
master, slave = os.openpty()
p = subprocess.Popen(['mpg123', '-C', 'music.mp3'], stdin=master)
time.sleep(3)
os.write(slave, 's')
time.sleep(3)
os.write(slave, 's')
time.sleep(6)
os.write(slave, 'q')
答案 2 :(得分:0)
mpg123 需要一个类似终端的标准输入;作为对徐雄的赞美。我确实收到了一个 TypeError “需要一个类似字节的对象,而不是 str”。 这是通过对字节进行类型转换来解决的: os.write(slave, b's) .. 经过测试,对我有用。