Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class A1:
- def __init__(self,filename):
- self.file = filename
- self.tup_li = self.read_file()
- self.unique_dict = self.get_unique_ip_data_list()
- self.ip_li = self.get_list_ip()
- def read_file(self):
- my_list = []
- filename = self.file
- input_file = open(filename, 'r')
- contents = input_file.readlines()
- input_file.close()
- for i in contents:
- info = i.split('\t')
- my_tuple = (info[2],round(float(info[1])),int(info[7]))
- my_list.append(my_tuple)
- return my_list
- def get_unique_ip_data_list(self):
- dict1 = {}
- my_list = self.tup_li
- for i in my_list:
- if i[0] not in dict1:
- dict1[i[0]] = [(i[1],i[2])]
- else:
- dict1[i[0]].append((i[1],i[2]))
- return dict1
- def get_list_ip(self):
- list1 = []
- for key in self.unique_dict:
- data = self.unique_dict[key]
- size = int(data[-1][0]) // 10 + 1
- ip = IP_address(data,key,size)
- list1.append(ip)
- return list1
- def swap(self,list1,a,b):
- list1[a], list1[b] = list1[b], list1[a]
- def __str__(self):
- a_list = self.ip_li
- length = len(a_list)
- for i in range(length - 1, 0, -1):
- for j in range(i):
- if a_list[j] > a_list[j+1]:
- self.swap(a_list, j, j+1)
- string = "["
- if len(a_list) > 1:
- for i in a_list:
- string += "'" + i.__str__() + "', "
- string = string[:-2]
- string += "]"
- return string
- else:
- for i in a_list:
- string += "'" + i.__str__() + "'"
- string += "]"
- return string
- class IP_address:
- def __init__(self,data_list,ip_key,size):
- self.data_list = data_list
- self.ip_key = ip_key
- self.size = size
- def get_ip_address(self):
- return self.data_list
- def get_freq_list(self):
- value = 0
- a_list = []
- for num in range(self.size):
- for i in self.data_list:
- if i[0] // 10 == num:
- value += 1
- a_list.append(value)
- value = 0
- return a_list
- def get_sum_list(self):
- value = 0
- my_list = []
- for num in range(self.size):
- for i in self.data_list:
- if i[0] // 10 == num:
- value += i[1]
- my_list.append(value)
- value = 0
- return my_list
- #def get_avg_list(self):
- #list1 = self.get_freq_list()
- #list2 = self.get_sum_list()
- #a_list = []
- #for i in range(len(list1)):
- #if list1[i] == 0:
- #a_list.append(0)
- #else:
- #num = list2[i] / list1[i]
- #a_list.append(round(num,1))
- #return a_list
- def get_avg_list(self):
- value = 0
- value1 = 0
- my_list = []
- li = []
- for num in range(self.size):
- for i in self.data_list:
- if i[0] // 10 == num:
- li.append(i)
- value1 += i[1]
- if len(li) > 0:
- value = value1/len(li)
- my_list.append(round(value,1))
- else:
- my_list.append(0)
- value1 = 0
- value = 0
- li = []
- return my_list
- def get_statistics(self):
- my_list=[]
- value = 0
- count = 0
- for i in self.data_list:
- value += i[1]
- count += 1
- average = value / len(self.data_list)
- my_list.append(self.ip_key)
- my_list.append(value)
- my_list.append(count)
- my_list.append(round(average))
- return my_list
- def __str__(self):
- count = self.get_freq_list()
- value = self.get_sum_list()
- avg = self.get_avg_list()
- message = "{}:freq={},sum={},avg={}".format(self.ip_key,count,value,avg)
- return message
- def __eq__(self,other):
- if isinstance(self,IP_address) and isinstance(other,IP_address) == True:
- return self.ip_key == other.ip_key
- else:
- return False
- def __lt__(self,other):
- index1 = self.ip_key.rfind(".")
- s1 = int(self.ip_key[index1+1:])
- index2 = other.ip_key.rfind(".")
- s2 = int(other.ip_key[index2+1:])
- if s1 < s2:
- return True
- else:
- return False
- my_ip_list = A1('trace05.txt')
- print(my_ip_list)
- print()
- my_ip_list = A1('trace20.txt')
- print(my_ip_list)
- print()
- my_ip_list = A1('trace33.txt')
- print(my_ip_list)
- print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement