首頁 >後端開發 >Python教學 >Python如何取得本機內部網路IP位址

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

PHPz
PHPz轉載
2023-04-23 08:31:062464瀏覽

方法一

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刪除