我正在尝试使用bash命令在python中使用MJPG streamer启动流。虽然我知道一般过程是将命令放入字符串,拆分字符串,然后将拆分字符串放入Popen,我遇到的问题是命令需要双引号而.split()删除这些因此我我收到错误,说明-d标志是一个无法识别的选项。如果我直接运行它,该命令运行正常,但我似乎无法从python(Python 2.7)运行它。
from subprocess import Popen
def start_stream(device):
stream_start_cmd = """
sudo /usr/local/bin/mjpg_streamer -i
"/usr/local/lib/input_uvc.so -d /dev/video{0} -y"
-o "/usr/local/lib/output_http.so -w
/usr/local/www -p {1}"
""".format(device,
'80' if device == 0 else '443 &')
Popen(stream_start_cmd.split())
if __name__ == '__main__':
start_stream(0)
另外请注意,有没有更好的方法来格式化这个混乱?
答案 0 :(得分:0)
python文档说:
args应该是一系列程序参数,或者是一个字符串。
根据您提供的命令,一旦拆分,我们有
['sudo', '/usr/local/bin/mjpg_streamer', '-i', '"/usr/local/lib/input_uvc.so', '-d', '/dev/video{0}', '-y"', '-o', '"/usr/local/lib/output_http.so', '-w', '/usr/local/www', '-p', '{1}"']
您可以在/usr/local/lib/input_uvc.so
之前和-y
之后看到双引号。那些双引号会使args不准确。