: объект ‘NoneType’ не имеет атрибута ‘group’

#python #raspberry-pi #cgi #speed-test

#python #raspberry-pi #cgi #проверка скорости

Вопрос:

Новичок в python, так что, вероятно, это что-то простое. Raspberry Pi 4, с запущенным apache и подключенным CGI. Speedtest-cli установлен и работает нормально. Я могу запустить приведенный ниже скрипт в Putty без проблем. Но когда я пытаюсь запустить его в cgi-bin для теста, я получаю сообщение об ошибке в этой строке:

выведите ping.group(1)

Ошибка: <введите ‘исключения.AttributeError’>: объект ‘NoneType’ не имеет атрибута ‘group’

Кажется, он пропускает строку, в которой вызывается speedtest: response = subprocess.Popen(‘/usr/bin/speedtest’, shell=True, стандартный вывод=подпроцесс.PIPE).stdout.read().decode(‘utf-8’)

Опять же, это отлично работает в Putty.

 
#!/usr/bin/python
print ('Content-Type: text/html')
print

import os
import re
import subprocess
import time
import cgi, cgitb
cgitb.enable()

try:

        while(True):

           print("rGetting data")
           print("------------------------------------")
           response = subprocess.Popen('/usr/bin/speedtest', shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
                 #print(response)

           ping = re.search("Latency:s (.*?)s ", response, re.MULTILINE)
           download = re.search("Download:s (.*?)s", response, re.MULTILINE)
           upload =  re.search("Upload:s (.*?)s", response, re.MULTILINE)

           ping = ping.group(1)
           download = download.group(1)
           upload = upload.group(1)

           print("Ping: "   ping   " m/s")
           print("Download: "   download   " mb/s")
           print("Upload: "   upload   " mb/s")
           time.sleep(1810)
           print("rnrn")

except:
        cgitb.handler()
 

Комментарии:

1. re.search("Latency:s (.*?)s ", response, re.MULTILINE) возвращает None, что, я полагаю, означает, что он не нашел совпадения. Дважды проверьте response , содержит ли он данные, которые, по вашему мнению, есть.

2. Что вы увидите, если раскомментируете print(response) строку? Кажется важным.

3. Я получаю все .. запуск в cgi-bin, я получаю ту же ошибку. Похоже на подпроцесс вызова. Popen ничего не возвращает. Но это работает… .только не тогда, когда я делаю это на apache / cgi-bin. Печать (ответ) была тестом, чтобы увидеть, что возвращалось…