Python實(shí)現(xiàn)獲取內(nèi)網(wǎng)IP地址的方法總結(jié)
方法一
import socket def get_local_ip_address(): ip_address = '' try: # 獲取本機(jī)主機(jī)名 hostname = socket.gethostname() # 獲取本機(jī)IP ip_address = socket.gethostbyname(hostname) except: pass return ip_address
方法二
import subprocess def get_local_ip_address(): ip_address = '' try: # 獲取IP地址 ip_address = subprocess.check_output(['hostname', '-I']).decode('utf-8').strip() except: pass return ip_address
該方法利用了Unix系統(tǒng)上的hostname命令來(lái)獲取IP地址,并返回字符串格式的IP地址。如果你使用的是Windows系統(tǒng),則需要使用ipconfig命令。你可以在subprocess.check_output中傳遞正確的命令,以便在Windows上獲取IP地址。
import socket def get_local_ip_address(): ip_address = '' try: # 獲取IP地址 ip_address = socket.getaddrinfo(socket.gethostname(), None, family=socket.AF_INET, proto=socket.IPPROTO_TCP)[0][4][0] except: pass return ip_address
該方法利用getaddrinfo函數(shù)獲取計(jì)算機(jī)的IP地址,并返回字符串格式的IP地址。
方法三(三方模塊)
import netifaces def get_local_ip_address(): ip_address = '' try: # 獲取網(wǎng)絡(luò)接口列表 interfaces = netifaces.interfaces() # 查找第一個(gè)非本地回環(huán)接口的IP地址 for interface in interfaces: if interface == 'lo': continue addresses = netifaces.ifaddresses(interface) ip_addresses = addresses.get(netifaces.AF_INET) if ip_addresses: ip_address = ip_addresses[0]['addr'] break except: pass return ip_address
該方法使用netifaces模塊來(lái)獲取計(jì)算機(jī)的網(wǎng)絡(luò)接口列表,并查找第一個(gè)非本地回環(huán)接口的IP地址。然后,它返回一個(gè)字符串格式的IP地址。
方法四(Linux)
如果你是在Linux系統(tǒng)上運(yùn)行Python程序,可以使用ifconfig命令來(lái)獲取內(nèi)網(wǎng)IP地址。以下是一個(gè)可以在Linux系統(tǒng)上使用的Python函數(shù):
import subprocess def get_local_ip_address(): ip_address = '' try: # 獲取IP地址 output = subprocess.check_output(['ifconfig']).decode('utf-8') lines = output.split('\n') for line in lines: if 'inet ' in line and not line.startswith('127.0.0.1'): ip_address = line.split()[1] break except: pass return ip_address
該方法使用subprocess模塊來(lái)運(yùn)行Linux ifconfig命令,并從命令輸出中提取IP地址。它返回一個(gè)字符串格式的IP地址。
請(qǐng)注意,該方法僅適用于Linux系統(tǒng)。如果你使用的是其他操作系統(tǒng),請(qǐng)使用前面提到的方法之一來(lái)獲取計(jì)算機(jī)的內(nèi)部IP地址。
方法五(windows)
import os def get_local_ip_address(): ip_address = '' try: # 獲取IP地址 ipconfig_process = os.popen('ipconfig') ipconfig_output = ipconfig_process.read() ipconfig_process.close() for line in ipconfig_output.split('\n'): if 'IPv4' in line: ip_address = line.split(': ')[-1] break except: pass return ip_address
到此這篇關(guān)于Python實(shí)現(xiàn)獲取內(nèi)網(wǎng)IP地址的方法總結(jié)的文章就介紹到這了,更多相關(guān)Python獲取內(nèi)網(wǎng)IP地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django3.2 自動(dòng)發(fā)現(xiàn)所有路由代碼詳解
這篇文章主要為大家介紹了Django自動(dòng)發(fā)現(xiàn)所有路由的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12Python實(shí)現(xiàn)自動(dòng)玩貪吃蛇程序
這篇文章主要介紹了通過(guò)Python實(shí)現(xiàn)的簡(jiǎn)易的自動(dòng)玩貪吃蛇游戲的小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)一學(xué)2022-01-01Python文件系統(tǒng)模塊pathlib庫(kù)
這篇文章介紹了Python中的文件系統(tǒng)模塊pathlib庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05pycharm?使用conda虛擬環(huán)境的詳細(xì)配置過(guò)程
這篇文章主要介紹了pycharm?使用conda虛擬環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Python一鍵實(shí)現(xiàn)PDF文檔批量轉(zhuǎn)Word
無(wú)論是在工作還是學(xué)習(xí)當(dāng)中,大家都會(huì)遇到這樣一個(gè)問(wèn)題,將“PDF當(dāng)中的內(nèi)容(文本和圖片)轉(zhuǎn)換為Word的格式”,本文將用Python實(shí)現(xiàn)一鍵批量將PDF轉(zhuǎn)Word,需要的可以參考一下2022-08-08Python中對(duì)象的比較操作==和is區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Python中對(duì)象的比較操作==和is區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02