【问题标题】:From ipaddress get network using ip_address in Python3在 Python3 中使用 ip_address 从 ipaddress 获取网络
【发布时间】:2023-04-02 04:49:01
【问题描述】:

如何转换字符串 ip,例如“1.2.3.4”,到带有网络掩码“255.255.255.0”的 ipaddress.ip_network,例如使用 ipaddress 库获取 ip_network("1.2.3.0/24") 。目的不是我自己对 ips 进行任何字符串操作。

【问题讨论】:

    标签: python-3.x ip ip-address


    【解决方案1】:

    只需添加选项 strict=False。在这种情况下,将剥离任何主机位以将接口地址转换为有效的网络地址。

    >>> from ipaddress import ip_network
    >>>
    >>> network = str(ip_network("1.2.3.4/255.255.255.0", strict=False))
    >>> network
    '1.2.3.0/24'
    

    如果您想保留实际的 IPv4Network/IPv6Network 对象,请跳过转换回字符串。

    顺便说一句,如果您确实想要一个同时设置主机位和掩码的字符串,那么您可以使用 ipaddress 模块中的“ip_interface”函数。它将返回一个 IPv4Interface 对象:

    >>> from ipaddress import ip_interface
    >>>
    >>> interface = str(ip_interface("1.2.3.4/255.255.255.0"))
    >>> interface
    '1.2.3.4/24'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多