我想运行一个bash命令来启动一个在python中使用MJPG流的流。虽然我知道一般过程是将命令放入一个字符串中,然后拆分字符串,然后将拆分字符串放入Popen中,但我遇到的问题是该命令需要双引号,而.split()会删除这些字符,因此我我收到错误,指出-d标志是一个无法识别的选项。该命令运行良好,如果我直接运行它,但我似乎无法让它从Python(Python 2.7)运行。在python中用引号运行bash命令
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)
也侧面说明,有没有更好的方式来格式化这个烂摊子?
我认为这是一个单一的命令 – hjpotter92
我不认为你需要'/usr/local/lib/input_uvc.so -d/dev/video {0} -y'和'/ usr/local/lib /output_http.so -w /usr/local/www -p {1}' – haifzhan