TypeError:应为字符串或缓冲区检索

2024-04-29 06:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个项目,扫描我的网络中的MAC地址,要么允许它们,要么禁止它们进入我的本地网络。我编写这个脚本是为了熟悉re和pynetgear模块来完成这个任务,因为我计划使用这些地址来存储数据,以确定哪个设备是哪个设备。我尝试过的一切都不起作用,或者我尝试在这里和其他资源上查找问题,但到目前为止没有人帮助我。你知道吗

我试过查看regex的文档,但不知道这个问题是什么。第一个一直到设备的代码只在MAC下工作,它调用TypeError。你知道吗

from pynetgear import Netgear
import re

netgear = Netgear(password='password')

devices = netgear.get_attached_devices()

MAC = re.search(r"mac=..:..:..:..:..:..", devices)
print(MAC.group(0))

Traceback (most recent call last):
  File "/home/z33k/Desktop/python/adhdResearch.py", line 8, in <module>
    MAC = re.search(r"mac=..:..:..:..:..:..", devices)
  File "/usr/lib/python2.7/re.py", line 146, in search
    return _compile(pattern, flags).search(string)
TypeError: expected string or buffer

Tags: pyimportresearchmac地址linepassword
2条回答

我觉得你根本不需要正则表达式。你知道吗

根据PyNetgear docsget_attached_devices返回命名元组的列表。您需要遍历列表并打印mac值:

for item in devices:
    print(item.mac)

你知道吗检索需要字符串或缓冲区,但devices是包含namedtuples的列表。你知道吗

您可以在源代码中看到:

https://github.com/MatMaul/pynetgear/blob/247d6b9524fcee4b2da0e65ca12c52ebdd3676b2/pynetgear/init.py#L46-L49

https://github.com/MatMaul/pynetgear/blob/247d6b9524fcee4b2da0e65ca12c52ebdd3676b2/pynetgear/init.py#L224-L241

打印出MAC地址:

for device in devices: print(device.mac)

至于允许或禁止个人地址,我很遗憾不知道。你知道吗

相关问题 更多 >