Почему python3 не может выполнить какую-либо команду linux? - PullRequest
0 голосов
/ 17 июня 2019

Я могу выполнить mjpg-streamer с помощью терминала raspberry-pi 3.

А ниже я использую команду.

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').

Разве невозможно выполнить mjpg-streamer с использованием кода pathon 3?

ниже мой код.

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 Ответ

3 голосов
/ 17 июня 2019

вы можете попробовать использовать подпроцесс, который позволяет также сохранять 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 будет сохранен в переменной «output», а stderr - в переменной «error».

Кстати: было бы желательно использовать указанный формат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...