Python生成250个IP列表功能失效,寻求解决办法
问题分析与修复方案
你的代码存在几个关键问题,导致无法生成目标IP列表:
- IP段未循环更新:octet2、octet3、octet4的随机值定义在for循环外,整个循环只会复用同一组数值,生成的全是重复IP。
- 文件操作逻辑错误:每次循环用
'w'模式打开文件会清空原有内容,最终文件只剩最后一个(重复的)IP;且前面的with open(tarlist, 'a')未执行任何写入操作,属于冗余代码。 - IP格式拼接错误:你将IP拆分为元组,用
writelines写入时会把元组元素拆分输出,导致格式混乱,应直接拼接为完整字符串。
修复后的代码
import random tarlist = 'targets.txt' seed = input("Enter First Octet (example'192' '172' '10'): ") def make_list(): # 一次性打开文件,清空后批量写入 with open(tarlist, 'w') as tl: for _ in range(250): # 每次循环生成新的后三段IP值 octet2 = random.randrange(256) # 改为256才能覆盖0-255全范围 octet3 = random.randrange(256) octet4 = random.randrange(256) # 拼接为标准IP格式,每行一个 ipadd = f"{seed}.{octet2}.{octet3}.{octet4}\n" tl.write(ipadd) make_list() print("250个IP已生成并存入targets.txt")
修复说明
- 将后三段IP的随机生成逻辑移入for循环内,确保每次循环生成新的IP值。
- 仅在最外层打开一次文件,避免重复打开导致的内容清空问题,提升写入效率。
- 使用f-string拼接IP字符串,格式更简洁规范,每行一个IP便于后续读取。
- 把
randrange(255)改为randrange(256),覆盖0-255所有合法IP段数值。
内容的提问来源于stack exchange,提问作者Derek Johnston
相关产品推荐
相关产品推荐

