在Python中测试网络访问

时间:2017-05-23 14:28:45

标签: python

我试图判断我是否在python中有网络访问权限。我正在使用:

    interfaces = os.listdir("/sys/class/net")
    for interface in interfaces:
        cards = open("/sys/class/net/" + interface + "/operstate", "r");
        if cards.read() == "up":
            print("network is up")
        cards.close()

即使添加'print(cards.read())'返回,也永远不会这样。我已经尝试在if语句中添加换行符,但这没有帮助。

如果您知道一种更好的方法来判断我是否有网络访问权限,那也是值得赞赏的。

2 个答案:

答案 0 :(得分:1)

尝试if cards.read().rstrip() == "up"它肯定会解决您的问题。 rstrip()删除字符串尾部的空格,换行符,制表符和carrige返回字符(分别为\ n \ t \ r)

<强>参考:

NetworkTester中的

_TestEthernet方法 https://gist.github.com/portablejim/1985696

更新#1: 使用以下内容here提及了检查网络接口是否已启动的更好方法:

def is_interface_up(interface):
    addr = netifaces.ifaddresses(interface)
    return netifaces.AF_INET in addr

答案 1 :(得分:-1)

你可以试试 如果[&#34; up&#34;]中的cards.read():

而不是我过去遇到问题的等于等于