Python通过IP地址生成器StopIteration进行迭代

问题描述

我试图编写一个脚本来查找以字符串形式给出的范围内的IP地址(例如“ 10.10.225.20-10.10.225.29”),然后在iter_iprange中找到了函数netaddr包。但是,当我尝试遍历生成器的长度时,会有一些奇怪的行为。

考虑以下代码

generator = netaddr.iter_iprange('192.168.1.200','192.168.1.230',step=1)
length = len(list(generator))

try:
    for i in range(0,length):
        print(i,next(generator))

except stopiteration as s:
    print("Iteration stopped: ",s)

根本不进行迭代。

但是当我定义时它确实起作用:

generator = netaddr.iter_iprange('192.168.1.200',step=1)
generator2 = netaddr.iter_iprange('192.168.1.200',step=1)
length = len(list(generator2))

我什至无法复制生成器,仅此一项就会从第一个next()开始抛出异常。

我不知道生成器在内部如何工作,但是那一定是一些底层的东西,也许您可​​以帮助使我的代码不那么丑陋。我认为我没有正确使用它们。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)