【问题标题】:python how can i add new data into iptools IpRangeListpython如何将新数据添加到iptools IpRangeList
【发布时间】:2014-07-03 06:47:00
【问题描述】:

最近,我发现 python 库“iptools”可以帮助我解决一些问题, 但我在 iptools.IpRangeList 遇到问题, i 只能在 first 中声明初始数据,如

internalIP = iptools.IpRangeList(
'127.0.0.1/8',                
'192.168/16',               
'10.0.0.1/8'  

)

如果我想在 IpRangeList 中添加一个新的 ip,编译器总是显示错误

internalIP.append('1.1.1.1')
AttributeError: 'IpRangeList' object has no attribute 'append'

或从文件打开

intranetlist = IpRangeList()
if os.path.isfile("/tmp/intranal.list"):
    fp = open("/tmp/intranal.list", 'r')
    intranetlist = ([line.strip() for line in fp])        
    print intranetlist , len(intranetlist)
    fp.close()
    return

结果: ['127.0.0.1/8', '192.168/16', '10.0.0.0/8'] 3

不正确,正确的结果如下

>>> from iptools import *
>>> a=IpRangeList('127.0.0.1/8' , '192.168/16', '10.0.0.0/8')
>>> print a
(('127.0.0.0', '127.255.255.255'), ('192.168.0.0', '192.168.255.255'), ('10.0.0.0', '10.255.255.255'))
>>> len(a)
33619968
>>> 

谁能帮我解决这个问题? 或者有其他我可以使用的库吗?

谢谢。

【问题讨论】:

    标签: python list ip range


    【解决方案1】:

    您收到 AttributeError 是因为 IpRangeList 对象没有定义 append 方法。另外,在内部它是 defines the IP listing as a tuple,你不能附加到它。

    但是,您可以做的是创建所需 IP 范围的完整列表,然后从该 using *args syntax 创建 IpRangeList 以将列表解压缩到函数调用中,如下所示:

    intranetlist = None
    if os.path.isfile("/tmp/internal.list"):
        fp = open("/tmp/internal.list", 'r')
        intranetlist = IpRangeList(*[line.strip() for line in fp])
        print intranetlist , len(intranetlist)
        fp.close()
    return intranetlist
    

    至于附加到已经存在的IpRangeList,如果不更改它是不可能的,而且一旦您创建了IpRangeList,您似乎也无法轻松访问 IP 列表。所以我建议创建一个基本的 Python 列表并在最后一刻创建IpRangeList,因为它们实际上是不可变的。

    【讨论】:

    • @user3638883 没问题!
    • 嗨乐高,我有另一个问题,我怎样才能快速转换像 127.1.1.1 到 '127.1.1.1,当我得到一个 IP 地址时,它会像 127.1.1.1,但我需要将其转换为“127.1.1.1”以在 IpRangeList 中使用,否则会显示错误,您能帮帮我吗?谢谢。 >>> a=IpRangeList('127.0.0.1/8' , '192.168/16', '10.0.0.0/8') >>> 127.1.1.1 in a File "", line 1 127.1.1.1 in ^ SyntaxError: invalid syntax >>> '127.1.1.1' in a True >>> str(127.1.1.1) in a File "", line 1 str(127.1.1.1) in a ^ SyntaxError: invalid syntax
    • 我建议打开一个新问题,以便正确格式化错误。
    • 嗨乐高,我提出了一个新问题。请帮忙检查一下,谢谢stackoverflow.com/questions/23668598/…
    猜你喜欢
    • 2017-03-11
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多