你有一个CIDR网络地址比如“123.45.67.89/27”,你想将其转换成它所代表的所有IP (比如,“123.45.67.64”, “123.45.67.65”, …, “123.45.67.95”))

    1. import ipaddress
    2. net = ipaddress.ip_network('123.45.67.64/27')
    3. print(net)
    4. for a in net: print(a)
    5. net6 = ipaddress.ip_network('2:3456:78:90ab:cd:ef01:23:30/125')
    6. print(net6)
    7. for a in net6: print(a)
    1. 123.45.67.64/27
    2. 123.45.67.64
    3. 123.45.67.65
    4. 123.45.67.66
    5. 123.45.67.67
    6. 123.45.67.68
    7. 123.45.67.69
    8. 123.45.67.70
    9. 123.45.67.71
    10. 123.45.67.72
    11. 123.45.67.73
    12. 123.45.67.74
    13. 123.45.67.75
    14. 123.45.67.76
    15. 123.45.67.77
    16. 123.45.67.78
    17. 123.45.67.79
    18. 123.45.67.80
    19. 123.45.67.81
    20. 123.45.67.82
    21. 123.45.67.83
    22. 123.45.67.84
    23. 123.45.67.85
    24. 123.45.67.86
    25. 123.45.67.87
    26. 123.45.67.88
    27. 123.45.67.89
    28. 123.45.67.90
    29. 123.45.67.91
    30. 123.45.67.92
    31. 123.45.67.93
    32. 123.45.67.94
    33. 123.45.67.95
    34. 2:3456:78:90ab:cd:ef01:23:30/125
    35. 2:3456:78:90ab:cd:ef01:23:30
    36. 2:3456:78:90ab:cd:ef01:23:31
    37. 2:3456:78:90ab:cd:ef01:23:32
    38. 2:3456:78:90ab:cd:ef01:23:33
    39. 2:3456:78:90ab:cd:ef01:23:34
    40. 2:3456:78:90ab:cd:ef01:23:35
    41. 2:3456:78:90ab:cd:ef01:23:36
    42. 2:3456:78:90ab:cd:ef01:23:37

    要注意的是,ipaddress 模块跟其他一些和网络相关的模块比如 socket 库交集很少。 所以,你不能使用 IPv4Address 的实例来代替一个地址字符串,你首先得显式的使用 str() 转换它。