ipv6 已知起止地址,求所有可用地址

我已经知道ipv6的起始地址和结束地址,怎么能得到所有的可用地址

例子:
已知开始地址(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