Python 3.x Python迭代IP地址生成器停止迭代

Python 3.x Python迭代IP地址生成器停止迭代,python-3.x,generator,stopiteration,Python 3.x,Generator,Stopiteration,我试图编写一个脚本,在以字符串形式给出的范围内查找IP地址(例如“10.10.225.20-10.10.225.29”),我在netaddr包中找到了函数iter\u iprange。但是当我尝试遍历生成器的长度时,会出现一些奇怪的行为 考虑以下代码: generator = netaddr.iter_iprange('192.168.1.200', '192.168.1.230', step=1) length = len(list(generator)) try: for i in

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

考虑以下代码:

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', '192.168.1.230', step=1)
generator2 = netaddr.iter_iprange('192.168.1.200', '192.168.1.230', step=1)
length = len(list(generator2))
我甚至无法复制生成器,仅此一项就将引发从第一个
next()
开始的异常

我不知道生成器内部是如何工作的,但这一定是一些低级的东西,也许你可以帮助我减少代码的难看性。我想我用得不对