Python regex read/etc/决议.conf只返回ip地址,觉得差不多了,

2024-05-15 02:55:39 发布

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

我一直在写一个python脚本,我对某个函数有问题,它应该打开/etc/决议.conf文件,逐行读取并只返回ip地址。虽然它看起来是在查找ip地址,但它并没有告诉我内存的哪个部分,也不知道如何让它告诉我匹配的字符串本身。在

函数如下:

def get_resolv():
    nameservers=[]
    rconf = open("/etc/resolv.conf","r")
    line = rconf.readline()
    while line:
        try:
            ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b",line)


        except:
            ip = "none set"
        print ip
        nameservers.append(ip)
        line= rconf.readline()

    return nameservers

以下是调用时的输出:

^{pr2}$

Tags: 文件函数内存字符串ip脚本readline地址
2条回答

另一种方式

>>> data=open("/etc/resolv.conf").read().split()
>>> for item in data:
...     if len( item.split(".") ) == 4:
...          print item
...
192.168.0.1

re.search返回一个Match Object。这是一个具有许多属性的对象,这些属性告诉您匹配的情况。在

要获得完整的匹配文本,请使用ip.group(0)ip.group()。在

如果没有匹配,re.search也不会抛出异常,而是返回None。所以你的代码应该看起来像:

ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b",line)

if ip is None:
    ip = "none set"

相关问题 更多 >

    热门问题