問:已知開始地址(1.1.1.0)、結束地址(1.1.1.255);開始地址(1.1.2.3)、結束地址(1.1.2.12);開始地址(1.2.1.0)、結束地址(1.2.4.255);開始地址(1.1.6.0)、結束地址(1.1.8.212);求其中的所有IP地址。
答:將所有地址整理成以下類型:
運行代碼:
#!/usr/bin/python
# coding=UTF8
import os
import sys
from IPy import IP
#打開文件;1.txt是存放地址IP;ip.txt是以尾部添加的方式將結果輸入到ip.txt中。
f1=open("./1.txt","r")
f2=open("./ip.txt",'a+')
line1=f1.readlines()
iplist = ""
#獲取f1文件中的每行數據
for m in line1:
ips = str(m).split("-")
#獲取-前的開始IP
ips1 = str(ips[0]).split(".")
#獲取-後的開始IP
ips2 = str(ips[1]).split(".")
#對IP地址進行判斷,並將相應結果輸入到f2中。
if(ips1[0]==ips2[0] and ips1[1]==ips2[1] and ips1[2]==ips2[2]):
for x in range(int(ips1[3]),int(ips2[3])+1):
iplist = str(ips1[0])+'.'+str(ips1[1])+'.'+str(ips1[2])+'.'+str(x)
print >> f2,"%s" %iplist
else:
for j in range(int(ips1[3]),256):
iplist = str(ips1[0])+'.'+str(ips1[1])+'.'+str(ips1[2])+'.'+str(j)
print >> f2,"%s" %iplist
for i in range(int(ips1[2])+1,int(ips2[2])):
for j in range(0,256):
iplist = str(ips1[0])+'.'+str(ips1[1])+'.'+str(i)+'.'+str(j)
print >> f2,"%s" %iplist
for j in range(0,int(ips2[3])):
iplist = str(ips1[0])+'.'+str(ips1[1])+'.'+str(ips2[2])+'.'+str(j)
print >> f2,"%s" %iplist
運行結果: