为什么Python3无法执行一些Linux命令?

19 浏览
0 Comments

为什么Python3无法执行一些Linux命令?

我可以在树莓派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()来执行它,但是在运行代码后摄像头出现问题,只能重新启动树莓派3。即使os.system()在代码为os.system(\'python3 test.py\')时也能正常工作。

使用Python 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/"')

admin 更改状态以发布 2023年5月20日
0
0 Comments

你可以尝试使用subprocess,可以保存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()

你将会在变量"output"中保存stdout,在"error"中保存stderr。

顺便说一句: 最好使用列出的格式

0