Сообщить об ошибке.

Функции уровня модуля ipaddress в Python

Функции преобразований объектов сети и IP-адреса

Модуль ipaddress также предоставляет следующие функции уровня модуля, при помощи которых можно выполнять различные вычисления и преобразования объект сети и объект IP-адреса.


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 в диапазоне.

  • если первый или последний не являются IP-адресами или имеют разные версии, то возникает ошибка TypeError.
  • если последний адрес не больше первого или если версия первого адреса не равна 4 или 6, то возникает ошибка ValueError.
>>> 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().