Python 3.3+ipaddressпонятие
ipaddress
модуль
Разбирает и проверяет IPv4- и IPv6-адреса и сети: принадлежность подсети, перебор хостов, маски.
Синтаксис
import ipaddress
Берите ipaddress вместо разбора строки адреса регулярным выражением: модуль сам проверяет диапазоны октетов, понимает IPv6 и отвечает, лежит ли адрес в сети. Адрес (ip_address) и сеть (ip_network) — разные объекты: '10.0.0.0/8' — сеть, а ip_network('10.0.0.5/8') бросит ValueError, потому что у сети заданы биты хоста; передайте strict=False или берите ip_interface.
Примеры
import ipaddress
net = ipaddress.ip_network('192.168.1.0/30')
print([str(h) for h in net.hosts()]) # → ['192.168.1.1', '192.168.1.2']
print(ipaddress.ip_address('192.168.1.2') in net) # → True
print(ipaddress.ip_address('::1').version) # → 6
ipaddress.ip_network('10.0.0.5/8') # → ValueError: host bits set
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности