Python如何取得本機內部網路IP位址

PHPz
發布: 2023-04-23 08:31:06
轉載
2329 人瀏覽過

方法一

import socket def get_local_ip_address(): ip_address = '' try: # 获取本机主机名 hostname = socket.gethostname() # 获取本机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系統上的hostname指令來取得IP位址,並傳回字串格式的IP位址。如果你使用的是Windows系統,則需要使用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函數取得電腦的IP位址,並傳回字串格式的IP位址。

方法三(三方模組)

import netifaces def get_local_ip_address(): ip_address = '' try: # 获取网络接口列表 interfaces = netifaces.interfaces() # 查找第一个非本地回环接口的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模組來取得電腦的網路介面列表,並找出第一個非本機回環介面的IP位址。然後,它傳回一個字串格式的IP位址。

方法四(Linux)

如果你是在Linux系統上執行Python程序,可以使用ifconfig指令來取得內網IP位址。以下是一個可以在Linux系統上使用的Python函數:

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模組來執行Linux ifconfig命令,並從命令輸出中提取IP位址。它傳回一個字串格式的IP位址。

請注意,此方法僅適用於Linux系統。如果你使用的是其他作業系統,請使用前面提到的方法之一來取得電腦的內部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
登入後複製

以上是Python如何取得本機內部網路IP位址的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!