为什么python3无法执行某些Linux命令?

时间:2019-06-17 13:46:46

标签: python python-3.x raspberry-pi3

我可以使用raspberry-pi 3终端执行mjpg-streamer。

下面是我使用的命令。

mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 800x448" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"

现在我想在python 3上执行它。所以我尝试使用os.system()和subprocess.call()来执行它,但是它执行失败,并且在运行代码后网络摄像头出错,因此我必须重新启动raspberry-pi 3.当代码像os.system()时,即使os.system('python3 test.py')也能很好地工作。

是否可以使用pathon 3代码执行mjpg-streamer?

下面是我的代码。

import os

os.system('mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 800x448" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"')

1 个答案:

答案 0 :(得分:3)

您可以尝试使用允许保存stdout和stderr的子进程:

    import subprocess
    ### define the command
    command = 'mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 800x448" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"'
    ### execute the command and save stdout and stderr as variables
    output, error = subprocess.Popen(command, universal_newlines=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

,您将把stdout保存在“输出”中,将“ stderr”保存在“错误”变量中。

顺便说一句:建议使用listed format