• 技术文章 >后端开发 >Python教程

    Python如何获取本机内网IP地址

    PHPzPHPz2023-04-23 08:31:06转载36

    方法一

    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中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Python ip地址
    上一篇:如何在Python中使用scikit-learn机器学习库。 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 如何用Python编写一个C盘垃圾清理工具• Python编程:使用摄像头捕获、播放和保存视频• Python 3.11的性能提升近64%!• Python中读写JSON格式数据的方法• Python的隐藏技巧有哪些?
    1/1

    PHP中文网