import re
import statistics
import collections
data = []
f = open("localhost_access_log.2016-04-01.txt", "r" )
for l in f:
match = re.search("^[\d:.]+", l )
ip = match.group()
match = re.search('\[([\w/:]+)', l)
date = match.group(1)
match = re.search(' /[\w.-]*', l)
doc = match.group().strip()
match = re.search('[\d-]+$', l)
byte = match.group()
if (byte == '-'):
byte = 0 byte = int(byte)
data.append([ip, date, doc, byte])
f.close()
print("1.전체 로그 출력")
for i in data:
print("접속ip: {}\n접속일: {}\n요청문서: {}\n바이트크기: {}".format(i[0], i[1], i[2], i[3]))
print("-"*30)
print("\n2. ip별 접속회수")
ip_list = [n[0] for n in data]
cip = collections.Counter(ip_list)
for i in cip:
print(i, cip[i],"회")
print("\n3. 문서별 방문회수")
doc_list = [n[2] for n in data]
cdoc = collections.Counter(doc_list)
for i in cdoc:
print(i, cdoc[i],"회")
print("\n4. 전체전송 바이트 사이즈, 평균 전송 바이트 사이즈, 전송 바이트 사이즈 표준 편차")
byte_list = [n[3] for n in data]
s = sum(byte_list)
m = statistics.mean(byte_list)
d = statistics.stdev(byte_list)
print("전체 전송 바이트 크기: {}\n평균 전송바이트 사이즈: {}\n전송 바이트 사이트 표준편차: {}".format(s,m,d))
print("\n5. 가장 많이 방문한 ip와 방문 회수")
m = cip.most_common(1)
m = m[0]
print(m[0], m[1], "회" )
import re
import collections
from statistics import mean, stdev
fp = open('localhost_access_log.2016-04-01.txt')
data = []
for rd in fp:
match = re.search('([\d.:]+) \S+ \S+ \[([\w:/]+) \S+\] "\S+ (\S+) \S+" \d+ (\S+)', rd )
d={}
d['ip']= match.group(1)
d['dt']= match.group(2)
d['view']= match.group(3)
bsize = match.group(4)
bsize = 0 if bsize=='-' else int(bsize)
d['bsize']= bsize
data.append( d )
# # 1. 전체 로그 출력# for dt in data:# print("접속ip:", dt['ip'])# print("접속일:", dt['dt'])# print("요청문서:", dt['view'])# print("바이트크기:", dt['bsize'])# print("="*10)#2.ipList = [ n['ip'] for n in data]
ipCount = collections.Counter(ipList)
for ip,cnt in ipCount.items():
print("ip:",ip,"접속횟수:",cnt)
#3.# viewList = [ n['view'] for n in data]# viewCount = collections.Counter(viewList)# for view,cnt in viewCount.items():# print("페이지:",view,"접속횟수:",cnt)
#4.
print( "전체전송사이즈:", sum([n['bsize'] for n in data] ) )
print( "평균전송사이즈:", mean([n['bsize'] for n in data] ) )
print( "표준편차:", stdev([n['bsize'] for n in data] ) )
#5.mip,cnt = ipCount.most_common(1)[0]
print("가장많이 방문ip:", mip, "방문횟수:", cnt )
# print( data )
# print("ip:", match.group(1) ) # print("dt:",match.group(2) ) # print("view:", match.group(3) ) # print("bsize:", match.group(4) ) # print("="*20)
댓글 없음:
댓글 쓰기