分享Python獲取本機(jī)IP地址的幾種方法
1、使用專用網(wǎng)站
獲取的是公網(wǎng)IP
網(wǎng)址:http://myip.ipip.net
代碼:
import requests
res = requests.get('http://myip.ipip.net', timeout=5).text
print(res)比較喜歡用這個(gè),在命令窗口也能使用:
curl http://myip.ipip.net

2、使用自帶socket庫
獲取的是局域網(wǎng)IP。
import socket # 函數(shù) gethostname() 返回當(dāng)前正在執(zhí)行 Python 的系統(tǒng)主機(jī)名 res = socket.gethostbyname(socket.gethostname()) print(res)
但是上面這個(gè)獲取的不是公網(wǎng)IP,結(jié)果也不穩(wěn)定(這里獲取了虛擬機(jī)下的IP),不建議使用。

如果計(jì)算機(jī)設(shè)備有連接到 Internet 的路由,可以使用:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])這個(gè)獲得的是局域網(wǎng)IP:

可以ipconfig看一下:

另一個(gè)適用于所有接口。它還適用于所有公共、私有、外部 IP。這種方法在 Linux、Windows 和 OSX 上很有效。
import socket
def extract_ip():
? ? st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
? ? try: ? ? ??
? ? ? ? st.connect(('10.255.255.255', 1))
? ? ? ? IP = st.getsockname()[0]
? ? except Exception:
? ? ? ? IP = '127.0.0.1'
? ? finally:
? ? ? ? st.close()
? ? return IP
print(extract_ip())注意:如果本身局域網(wǎng)IP就是公網(wǎng)IP的話,那這個(gè)獲得的,可以認(rèn)為是公網(wǎng)IP了。
3、使用第三方netifaces庫
獲取的是局域網(wǎng)IP。
netifaces 模塊用于提供有關(guān)網(wǎng)絡(luò)接口及其狀態(tài)的信息。
代碼:
沒裝的先裝一下庫
pip3 install netifaces
然后使用:
from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
? ? addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
? ? print(' '.join(addresses))
到此這篇關(guān)于分享Python獲取本機(jī)IP地址的幾種方法的文章就介紹到這了,更多相關(guān)Python獲取本機(jī)IP方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python光學(xué)仿真面向?qū)ο蠊鈱W(xué)元件類的實(shí)現(xiàn)
這篇文章主要為大家介紹了python光學(xué)仿真面向?qū)ο蠊鈱W(xué)元件類的實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
python網(wǎng)絡(luò)編程之文件下載實(shí)例分析
這篇文章主要介紹了python網(wǎng)絡(luò)編程之文件下載實(shí)現(xiàn)方法,實(shí)例分析了Python基于FTP及http實(shí)現(xiàn)文件下載的技巧,需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)將圖像轉(zhuǎn)換為ASCII字符圖
使用Python進(jìn)行圖像處理,非??旖莘奖悖喍處仔写a就可以實(shí)現(xiàn)功能強(qiáng)大的效果。在這篇文章中,我們將使用Python將圖像轉(zhuǎn)換為ASCII字符照,感興趣的可以了解一下2022-08-08
python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解
眾所周知python是一個(gè)很強(qiáng)大的語言,它擁有眾多的庫,今天我嘗試了使用python進(jìn)行驗(yàn)證碼的識別,下面這篇文章主要給大家介紹了關(guān)于python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-08-08
詳解MySQL數(shù)據(jù)類型int(M)中M的含義
int(M)拆分來說,int是代表整型數(shù)據(jù)那,么中間的M應(yīng)該是代表多少位了,后來查mysql手冊也得知了我的理解是正確的,下面這篇文章小編就來舉例詳細(xì)說明。 文中介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面就來學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
Python字典中的值為列表或字典的構(gòu)造實(shí)例
今天小編就為大家分享一篇Python字典中的值為列表或字典的構(gòu)造實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python連接遠(yuǎn)程ftp服務(wù)器并列出目錄下文件的方法
這篇文章主要介紹了python連接遠(yuǎn)程ftp服務(wù)器并列出目錄下文件的方法,實(shí)例分析了Python使用pysftp模塊的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

