首页 > 解决方案 > 为什么python3不能执行一些linux命令?

问题描述

我可以使用 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/"')

标签: pythonpython-3.xraspberry-pi3

解决方案


您也可以尝试使用允许保存 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()

并且您将标准输出保存在“错误”变量中的“输出”和“标准错误”中。

顺便说一句:建议使用列出的格式


推荐阅读