我想運行一個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