欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中實現(xiàn)ipaddress網(wǎng)絡(luò)地址的處理

 更新時間:2021年06月07日 10:17:16   作者:一天一篇Python庫  
ipaddress庫提供了處理IPv4與IPv6網(wǎng)絡(luò)地址的類。這些類支持驗證,查找網(wǎng)絡(luò)上的地址和主機(jī),以及其他常見的操作,本文就來介紹一下這些方法的使用,感興趣的一起來了解一下

前言

ipaddress庫提供了處理IPv4與IPv6網(wǎng)絡(luò)地址的類。這些類支持驗證,查找網(wǎng)絡(luò)上的地址和主機(jī),以及其他常見的操作。

本篇,將詳細(xì)介紹Python中ipaddress庫的使用規(guī)則。(內(nèi)容涉及很多計算機(jī)網(wǎng)絡(luò)知識,如果不懂,可以參考書籍《計算機(jī)網(wǎng)絡(luò)》)

地址

一般來說,我們使用ipaddress庫是通過ip_address()函數(shù)構(gòu)建一個地址對象。它會返回一個IPv4Address或IPv6Address實例。實例如下:

import ipaddress
import binascii

addresses = [
    '121.63.3.59',
    '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b'
]

for ip in addresses:
    address = ipaddress.ip_address(ip)
    print("IP地址:", address)
    print("IP Version:", address.version)
    print("是否是專用地址:", address.is_private)
    print("是否是公網(wǎng)地址:", address.is_global)
    print("是否是多播地址:", address.is_multicast)
    print("是否是環(huán)回地址:", address.is_loopback)
    print("是否是link-local保留:", address.is_link_local)
    print("判斷地址是否未指定:", address.is_unspecified)
    print("IP地址16進(jìn)制:", binascii.hexlify(address.packed))

運行之后,效果如下:

效果如下

網(wǎng)絡(luò)

網(wǎng)絡(luò)地址通常用一個基本地址和一個掩碼表示,掩碼指示地址的哪些部分表示網(wǎng)絡(luò),哪些部分表示該網(wǎng)絡(luò)上的地址??梢燥@式的表示掩碼,也可以使用一個前綴長度值來表示,示例如下:

import ipaddress

addresses = [
    '192.168.1.0/24',
    '2001:0db8:3c4d:0015::/64'
]

for n in addresses:
    net = ipaddress.ip_network(n)
    print("是否是專用地址:", net.is_private)
    print("該網(wǎng)段的廣播地址:", net.broadcast_address)
    print("IP地址與子網(wǎng)掩碼:", net.compressed)
    print("掩碼以二進(jìn)制的格式展示:", net.with_netmask)
    print("以主機(jī)掩碼格式展示:", net.with_hostmask)
    print("網(wǎng)絡(luò)中的地址總數(shù):", net.num_addresses)
    print()

運行之后,效果如下:

效果如圖

涉及IP地址與子網(wǎng)掩碼以及廣播地址等知識,讀者可以參考《計算機(jī)網(wǎng)絡(luò)》。

打印網(wǎng)絡(luò)地址有多少IP可用

在IPv4的網(wǎng)絡(luò)地址中,我們一般將其分為A,B,C類,上面我們提供的192.168.1.0是一個C類地址。學(xué)過網(wǎng)絡(luò)的應(yīng)該一眼就可以看出來其主機(jī)地址有254個,基地址為192.168.1.0,而廣播地址為192.168.1.255。整體是256個。

因為這是C類地址,數(shù)學(xué)稍微好點的肯定手到擒來,但是我給你一個IPv6或者IPv4的A類地址,能口算出來多少的恐怕很少吧,而ipaddress庫可以直接遍歷打印,示例如下:

import ipaddress

n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
for ip in zip(net):
    print(ip)

運行之后,效果如下:

效果

這里遍歷迭代,列出了所有的地址。如果只列出可用的主機(jī)地址把zip(net)改為zip(net.hosts())即可(也就是去除了廣播地址與基地址的其他地址)。

當(dāng)然,如果你只是想確定一個地址是否在網(wǎng)絡(luò)中,可以直接使用in進(jìn)行判斷。示例如下:

import ipaddress

n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
ip=ipaddress.ip_address('192.168.1.233')
if ip in net:
    print("在里面")

接口

網(wǎng)絡(luò)接口表示網(wǎng)絡(luò)上的一個特定地址,可以表示為一個主機(jī)地址和一個網(wǎng)絡(luò)前綴或網(wǎng)絡(luò)掩碼。示例如下:

import ipaddress

addresses = [
    '192.168.1.251/24',
    '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b/64'
]

for ip in addresses:
    iface = ipaddress.ip_interface(ip)
    print(iface)
    print("網(wǎng)絡(luò)地址:", iface.network)
    print("ip地址:", iface.ip)
    print("字符串表示形式:", iface.with_prefixlen)
    print("二進(jìn)制表示掩碼:", iface.with_netmask)
    print("主機(jī)掩碼表示:", iface.with_hostmask)

運行之后,效果如下:

效果號

到此這篇關(guān)于Python中實現(xiàn)ipaddress網(wǎng)絡(luò)地址的處理的文章就介紹到這了,更多相關(guān)Python ipaddress網(wǎng)絡(luò)地址 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python封裝的類型與作用域的優(yōu)勢實例深究

    Python封裝的類型與作用域的優(yōu)勢實例深究

    封裝是面向?qū)ο缶幊讨械暮诵母拍?它能夠幫助程序員隱藏類的內(nèi)部細(xì)節(jié),并限制對類成員的直接訪問,本文將深入探討Python中封裝的機(jī)制,介紹封裝的類型和優(yōu)勢,并提供詳細(xì)的示例展示如何在Python中實現(xiàn)封裝
    2023-12-12
  • python自動化生成ppt的實現(xiàn)代碼

    python自動化生成ppt的實現(xiàn)代碼

    在這篇博客中,我們將探討如何使用Python庫`python-pptx`來創(chuàng)建一個簡單的PowerPoint演示文稿(PPT),這個庫允許我們以編程方式創(chuàng)建幻燈片、添加文本、圖片、表格和自定義形狀,需要的朋友可以參考下
    2024-04-04
  • 使用Python根據(jù)一個列表的順序?qū)ζ渌斜磉M(jìn)行排序

    使用Python根據(jù)一個列表的順序?qū)ζ渌斜磉M(jìn)行排序

    這篇文章主要介紹了使用Python根據(jù)一個列表的順序?qū)ζ渌斜磉M(jìn)行排序,根據(jù)列表B中每個元素的下標(biāo)來獲取列表A中對應(yīng)位置的元素,將其作為排序依據(jù)即可,需要的朋友可以參考下
    2023-10-10
  • Python列表append()函數(shù)使用方法詳解

    Python列表append()函數(shù)使用方法詳解

    python中的append()函數(shù)是在列表末尾添加新的對象,且將添加的對象最為一個整體,下面這篇文章主要給大家介紹了關(guān)于Python列表append()函數(shù)使用方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實例

    Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實例

    這篇文章主要介紹了Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實例,本文直接給出操作mysql代碼實例,包含創(chuàng)建表、插入數(shù)據(jù)、插入多條數(shù)據(jù)、查詢數(shù)據(jù)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python自動化中三種等待時間方式

    Python自動化中三種等待時間方式

    這篇文章主要介紹了Python自動化中三種等待時間方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python Switch Case三種實現(xiàn)方法代碼實例

    Python Switch Case三種實現(xiàn)方法代碼實例

    這篇文章主要介紹了Python Switch Case2種實現(xiàn)方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 利用python實現(xiàn)凱撒密碼加解密功能

    利用python實現(xiàn)凱撒密碼加解密功能

    這篇文章主要介紹了利用python實現(xiàn)凱撒密碼加解密功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python3 讀、寫Excel文件的操作方法

    Python3 讀、寫Excel文件的操作方法

    這篇文章主要介紹了Python3 讀、寫Excel文件的操作方法,需要的朋友可以參考下
    2018-10-10
  • python中f字符串以及其常見用法總結(jié)

    python中f字符串以及其常見用法總結(jié)

    python中的f是format函數(shù)的縮寫,用于格式化輸出,下面這篇文章主要給大家介紹了關(guān)于python中f字符串以及其常見用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評論