Как получить саму цифру пинга после команды os.system('ping...?
import os
def ping(address):
return os.system('ping %s -n 1' % (address,))
Нашел вот такой простой способ сделать пинг до сервера, и получаю такой результат 
А как мне теперь взять отсюда само значение пинга? Все в интернете просто спрашивают про сам факт ответа от сервера, а значением никто почему-то не интересуется. Глупый вопрос наверное, я недавно только начал, все уже перерыл.
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Действия:
- Используйте
subprocessдля считывания результата выполненияping - Останется распарсить текст, например регулярным выражением с помощью модуля
re
from subprocess import Popen, PIPE, STDOUT
import re
ping_res = Popen("ping ya.ru", stdout=PIPE, stderr=STDOUT)
text = ''
for line in ping_res.stdout.readlines():
text += line.decode('cp866')
print(text)
# Обмен пакетами с ya.ru [87.250.250.242] с 32 байтами данных:
# Ответ от 87.250.250.242: число байт=32 время=26мс TTL=54
# Ответ от 87.250.250.242: число байт=32 время=26мс TTL=54
# Ответ от 87.250.250.242: число байт=32 время=26мс TTL=54
# Ответ от 87.250.250.242: число байт=32 время=26мс TTL=54
#
# Статистика Ping для 87.250.250.242:
# Пакетов: отправлено = 4, получено = 4, потеряно = 0
# (0% потерь)
# Приблизительное время приема-передачи в мс:
# Минимальное = 26мсек, Максимальное = 26 мсек, Среднее = 26 мсек
items = re.findall(r'TTL=(\d+)', text)
print(items)
# ['54', '54', '54', '54']
m = re.search(r'Пакетов: отправлено = (\d+), получено = (\d+), потеряно = (\d+)', text)
if m:
print(m.groups())
# ('4', '4', '0')
PS.
cp866 -- кодировка консоли винды