python 求助
想写一个IP比较的脚本,由于内容过多造成list时print打印不全你,想换成线程,但是使用_thread 时候告诉创建不成功,求助大侠了,我是刚学python啊,才看了10小时的书 ,谢谢大家来
# -*- coding:utf-8 -*-
"""打开一个EXCEL格式的文件,对里面的相关内容进行遍历"""
import xlrd
import threading
import _thread
import socket, struct
from IPy import IP
import time
def read_file(buf):
frame=buf
data=xlrd.open_workbook(frame)
try:
sh=data.sheet_by_name("已导出的系统")
except:
print("do not open Sheet1")
return 0
"""ncols=sh.ncols"""
nrow=sh.nrows
"""print(ncols)"""
"""print(nrow)"""
print("文件读取中……")
i=1
i=int(i)
while i<int(nrow):
cell_A1 = sh.cell(i,3).value
check_file(nrow,cell_A1)
i=i+1
def check_file(buf1,sheet):
"""从列表中取得相关的IP字段,并与列表中的IP段进行比较,如果没有所存在的IP地址则写入,如果存在则计数+1"""
file_sheet=sheet
i=0
buf_No=0
if(file_sheet==""):
return
else:
iplong=ip2long(file_sheet)
if len(ip_longlist)==0:
ip_longlist.append(iplong)
ip_longlist.append(1)
else:
while i< int (len(ip_longlist)):
checkIP=int(ip_longlist[i])
if(iplong==checkIP):
"""print(checkIP)"""
i=i+1
"""print("i" ,i)"""
buf_No=ip_longlist[i]
""" print("buf_No" ,buf_No)"""
ip_longlist[i]=buf_No+1
"""print(ip_longlist)"""
return
else:
list_long=len(ip_longlist)
list_long=int (list_long-1)
"""print(list_long)"""
if(i==list_long):
ip_longlist.append(iplong)
ip_longlist.append(1)
"""print(ip_longlist)"""
return
else:
i=i+1
def ip2long(ip):
packedIP=socket.ntohl(struct.unpack("I",socket.inet_aton(ip))[0])
return packedIP
def zhuanhan_ip(longIP):
middle=[]
middle=longIP
buf_long=int(len(middle))
print(buf_long)
print("ip 疯狂转化中")
buf_long=buf_long
for i in range(0,buf_long,2):
iP_addr=middle[i]
ip_list.append(socket.inet_ntoa(struct.pack('!L',iP_addr)))
time.sleep(0.01)
ip_list.append(middle[i+1])
if __name__=="__main__":
ip_list=[]
ip_longlist=[]
buf='e:\\123.xls'
print("信息正在处理中请稍后")
try:
_thread.start_new(read_file,())
except:
print ("Error: unable to start thread")
print("数据已经整理完成,IP转换中……")
zhuanhan_ip(ip_longlist)
print(ip_list)
print("处理完成")