method one
import socket
def get_local_ip_address():
ip_address = ''
try:
# 获取本机主机名
hostname = socket.gethostname()
# 获取本机IP
ip_address = socket.gethostbyname(hostname)
except:
pass
return ip_address
Method Two
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
This method utilizes hostname
the command on the Unix system to obtain the IP address and returns the IP address in string format. If you are using a Windows system, you need to use ipconfig
the command. You can subprocess.check_output
pass the correct command in to get the IP address on Windows.
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
This method uses getaddrinfo
the function to obtain the IP address of the computer and returns the IP address in string format.
Method 3 (three-party module)
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
This method uses netifaces
the module to get a list of the computer's network interfaces and finds the IP address of the first non-local loopback interface. It then returns the IP address in a string format.
Method 4 (Linux)
If you are running a Python program on a Linux system, you can use ifconfig
commands to obtain the intranet IP address. Here is a Python function that can be used on Linux systems:
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
This method uses subprocess
a module to run a Linux ifconfig
command and extract the IP address from the command output. It returns an IP address in string format.
Note that this method is only applicable to Linux systems. If you're using another operating system, use one of the previously mentioned methods to get your computer's internal IP address.
Method five (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