我试图判断我是否在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语句中添加换行符,但这没有帮助。
如果您知道一种更好的方法来判断我是否有网络访问权限,那也是值得赞赏的。
答案 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():
而不是我过去遇到问题的等于等于