Функция Python для тестирования ping

Я пытаюсь создать функцию, которую я могу вызвать по времени, чтобы проверить хороший пинг и вернуть результат, чтобы я мог обновить экранный экран. Я новичок в python, поэтому я не совсем понимаю, как вернуть значение или установить переменную в функции.

Вот мой код, который работает:

import os
hostname = "google.com"
response = os.system("ping -c 1 " + hostname)
if response == 0: pingstatus = "Network Active"
else: pingstatus = "Network Error"

Вот моя попытка создания функции:

def check_ping(): hostname = "google.com" response = os.system("ping -c 1 " + hostname) # and then check the response... if response == 0: pingstatus = "Network Active" else: pingstatus = "Network Error"

И вот как я показываю pingstatus:

label = font_status.render("%s" % pingstatus, 1, (0,0,0))

Итак, я ищу, как вернуть pingstatus из функции. Любая помощь будет принята с благодарностью.

3 ответа

Похоже, вам нужно < return ключевое слово

def check_ping(): hostname = "taylor" response = os.system("ping -c 1 " + hostname) # and then check the response... if response == 0: pingstatus = "Network Active" else: pingstatus = "Network Error" return pingstatus

Вам нужно захватить/'получить' возвращаемое значение функции (pingstatus) в переменной с чем-то вроде:

pingstatus = check_ping()

Некоторая информация о функциях python:

http://www.tutorialspoint.com/python/python_functions.htm

http://www.learnpython.org/en/Functions

Вероятно, стоит пройти хороший вводный учебник для Python, который охватит все основы. Я рекомендую исследовать Udacity.com и codeacademy.com


Вот упрощенная функция, которая возвращает логическое значение и не выводит вывод в stdout:

import subprocess, platform
def pingOk(sHost): try: output = subprocess.check_output("ping -{} 1 {}".format('n' if platform.system().lower()=="windows" else 'c', sHost), shell=True) except Exception, e: return False return True


Добавляя к этим двум ответам, вы можете проверить ОС и решить, следует ли использовать "-c" или "-n":

import os, platform
host = "8.8.8.8"
os.system("ping " + ("-n 1 " if platform.system().lower()=="windows" else "-c 1 ") + host)

Это будет работать в Windows, OS X и Linux

Вы также можете использовать sys:

import os, sys
host = "8.8.8.8"
os.system("ping " + ("-n 1 " if sys.platform().lower()=="win32" else "-c 1 ") + host)

licensed under cc by-sa 3.0 with attribution.