@vipvizor

Python subrocess wsgi. Как правильно считать значение из файла?

Здравствуйте! Проблема такая:
Необходимо считать значение gpio из файла.
Результат выполнения команды "cat /sys/devices/virtual/gpio/gpio27/value" - "0", как и должно быть
К серверу Apache подключен WSGI, написан скрипт:
import os
import glob
import subprocess
result = subprocess.call("cat /sys/devices/virtual/gpio/gpio27/value", shell = True)
if result == 0:
	state = "ON"
else:
	state = "OFF"	
def application(environ, start_response):
    status = '200 OK'
    output = state

    response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Результатом его выполнения всегда является "OFF", т.е. "1". Независимо от содержания файла "value"
В чём может быть проблема?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
valerium
@valerium
Изобретая велосипед
RTFM внимательно, господа.

subprocess.call() возвращает код завершения. cat успешно считывает значение из файла, то есть код завершения всегда 0 (да, именно int).

А всё потому, что Вы изначально выбрали трансректальное решение. Зачем из программы на Python вызывать cat, если можно просто открыть файл и считать из него?

with open('/sys/devices/virtual/gpio/gpio27/value') as f:
    result = f.read()


В данном случае, кстати, это будет строковая единица.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы