Модуль ipaddress
также предоставляет следующие функции уровня модуля, при помощи которых можно выполнять различные вычисления и преобразования объект сети и объект IP-адреса.
ipaddress.v4_int_to_packed()
представляет IP-адрес как 4 упакованных байта,ipaddress.v6_int_to_packed()
представляет IP-адрес в виде 16 упакованных байтов,ipaddress.summarize_address_range()
итератор суммированного сетевого диапазона,ipaddress.collapse_addresses()
возвращает итератор свернутых объектов сети,ipaddress.get_mixed_type_key()
возвращает ключ для сортировки между сетями и адресами.ipaddress.v4_int_to_packed(address)
:Функция ipaddress.v4_int_to_packed()
представляет IP-адрес как 4 упакованных байта в сетевом (обратном порядке).
Аргумент address
- это целочисленное представление IP-адреса IPv4.
Если целое число является отрицательным или слишком большим для IP-адреса IPv4 возникает исключение ValueError
]main-exception.
>>> import ipaddress >>> ipaddress.ip_address(3221225985) # IPv4Address('192.0.2.1') >>> ipaddress.v4_int_to_packed(3221225985) # b'\xc0\x00\x02\x01'
ipaddress.v6_int_to_packed(address)
:Функция ipaddress.v6_int_to_packed()
представляет IP-адрес в виде 16 упакованных байтов в сетевом (обратном порядке).
Аргумент address
- это целочисленное представление IP-адреса IPv6.
Если целое число является отрицательным или слишком большим для IP-адреса IPv6 возникает исключение ValueError
]main-exception.
ipaddress.summarize_address_range(first, last)
:Функция ipaddress.summarize_address_range()
возвращает итератор суммированного сетевого диапазона с учетом первого и последнего IP-адресов.
Аргумент first
- это первый объект IPv4Address
или IPv6Address
в диапазоне, а последний - последний объект IPv4Address
или IPv6Address
в диапазоне.
>>> import ipaddress >>> [ipaddr for ipaddr in ipaddress.summarize_address_range( ... ipaddress.IPv4Address('192.0.2.0'), ... ipaddress.IPv4Address('192.0.2.130'))] # [IPv4Network('192.0.2.0/25'), # IPv4Network('192.0.2.128/31'), # IPv4Network('192.0.2.130/32')]
ipaddress.collapse_addresses(addresses)
:Функция ipaddress.collapse_addresses()
возвращает итератор свернутых объектов IPv4Network
или IPv6Network
.
Аргумент address
- это итератор объектов IPv4Network
или IPv6Network
.
Если адреса address
содержат объекты смешанной версии, возникает ошибка TypeError
.
>>> import ipaddress >>> [ipaddr for ipaddr in ... ipaddress.collapse_addresses([ipaddress.IPv4Network('192.0.2.0/25'), ... ipaddress.IPv4Network('192.0.2.128/25')])] # [IPv4Network('192.0.2.0/24')]
ipaddress.get_mixed_type_key(obj)
:Функция ipaddress.get_mixed_type_key()
возвращает ключ, подходящий для сортировки между сетями и адресами. По умолчанию объекты Address
и Network
не сортируются.
Аргумент obj
это либо объект сети, либо объект IP-адреса.
Они принципиально разные, поэтому выражение ниже не имеет смысла:
IPv4Address('192.0.2.0') <= IPv4Network('192.0.2.0/24')
В некоторых случаях встает необходимость отсортировать их по ip-адресам. Если нужно это сделать, то можно использовать эту функцию в качестве ключевого аргумента для функции sorted()
.