2014-10-20 4 views
10

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

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

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 из функции. Любая помощь будет принята с благодарностью.

+0

... 'return pingstatus'? – jonrsharpe

+0

Чтобы узнать, как вызвать функции и вернуть значения, я рекомендую [Учебник по Python] (https://docs.python.org/3/tutorial/controlflow.html#defining-functions). – Kevin

ответ

14

Похоже, что вы хотите 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() 

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

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

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

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

+0

С помощью этого кода я получаю «NameError: name« pingstatus »не определен» – user72055

+0

см. Мое редактирование – Totem

+0

@Totem Ваше редактирование * не * необходимо. – poke

6

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

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 
2

Добавление на этих двух ответов, вы можете проверить ОС и решить, следует ли использовать "-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) 
+1

Я добавил свои идеи к моему ответу и дал вам верхушку для хорошей идеи. –

Смежные вопросы