gpt4 book ai didi

python - 了解 Python netaddr 库命令

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:47 26 4
gpt4 key购买 nike

我试图了解 https://pythonhosted.org/netaddr/tutorial_01.html 上的 netaddr Python 教程中的某些代码是如何运行的。特别是以下教程。

Summarizing list of addresses and subnets

Another useful operation is the ability to summarize groups of IP subnets and addresses, merging them together where possible to create the smallest possible list of CIDR subnets.

You do this in netaddr using the cidr_merge() function.

First we create a list of IP objects that contains a good mix of individual addresses and subnets, along with some string based IP address values for good measure. To make things more interesting some IPv6 addresses are thrown in as well.

>>> ip_list = [ip for ip in IPNetwork('fe80::/120')]
>>> ip_list.append(IPNetwork('192.0.2.0/24'))
>>> ip_list.extend([str(ip) for ip in IPNetwork('192.0.3.0/24')])
>>> ip_list.append(IPNetwork('192.0.4.0/25'))
>>> ip_list.append(IPNetwork('192.0.4.128/25'))
>>> len(ip_list)
515
>>> cidr_merge(ip_list)
[IPNetwork('192.0.2.0/23'), IPNetwork('192.0.4.0/24'), IPNetwork('fe80::/120')]

我对可用的不同选项有点困惑。 ip_list.extend([str(ip) for ip in IPNetwork('192.0.3.0/24')])ip_list.append(IPNetwork('192.0.4.0) 有什么区别/25'))

如果我不想使用 IPv6 (fe80::/120) 启动列表,而是想使用 IPv4 (192.0.4.0/24) )语法是什么。会像下面这样简单吗?

ip_list = IPNetwork('192.0.4.0/25')

谢谢。

最佳答案

该代码试图演示 cidr_merge() 函数可以合并 netaddr.IPAddress 对象、IP 地址字符串和 netaddr.IPNetwork 的列表 对象分解为最小的 IP 地址和子网组。为此,将创建一个包含各种 IP 地址相关对象的 Python 列表。然后将该列表传递给 cidr_merge() 以显示 IP 地址对象已合并为最小的对象集合。

最初,它创建一个 Python 列表 ip_list,其中包含许多单独的 netaddr.IPAddress 对象。它向此列表附加一个 IPNetwork 子网对象。请注意,这是一个标准的 Python 列表操作 - list.append() 只是将其参数添加到列表的末尾,例如:

>>> l = [1, 2]
>>> l.append(3)
>>> print l
[1, 2, 3]

list.extend() 使用另一个列表中的元素(实际上是任何可迭代的)扩展给定列表,例如

>>> l.extend([4, 5, 6])
>>> print l
[1, 2, 3, 4, 5, 6]

请参阅Python documentation有关这些列表操作的更多详细信息。

所以是的,就这么简单:

>>> ip_list = [IPNetwork('192.0.4.0/25')]    # create a list containing IPNetwork object
>>> print ip_list
[IPNetwork('192.0.4.0/25')]

并根据需要附加/扩展列表。

关于python - 了解 Python netaddr 库命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29821153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com