博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实战,
阅读量:6595 次
发布时间:2019-06-24

本文共 1423 字,大约阅读时间需要 4 分钟。

1.把日志状态码为200得请求记录下来
记录信息(ip,访问时间,请求资源)
封装函数再次调用,健壮性try except

#coding=utf-8

import re
def  aclog(path,putpath):
    result=""
    with open(path,"r")  as fp:
        lines=fp.readlines()
        for line in lines:
            if "200" in line:
                
                ip=re.search(r"(\d{1,3}\.){3}\d{1,3}",line).group()
                time=re.search(r"\[.*\]",line).group()
                url=re.search(r"GET.*(200)",line).group()[:-3]
                result=ip+time+url+"\n"
                with open(putpath,"a+") as fp1:
                    fp1.write(result)
        
aclog("e:\\accesslog.txt","e:\\aclog.txt")

 

另一种方法:使用split

#encoding=utf-8
def AnalysisLog(filenameget,filenameput):
    try:
        with open(filenameget) as f:
            as1=[i.split() for i in f]
        as2=[[i[0],i[3],i[6]] for i in as1 if i[8].startswith("2")]
        with open(filenameput,"w") as f:
            f.writelines(["".join([" ".join(i),"\n"]) for i in as2])
        return "success!"
    except Exception,e:
        return "failed!",str(e)
 
if __name__=="__main__":
    filenameget=ur"e:\\get.txt"
    filenameput=ur"e.\\put.txt"
    print AnalysisLog(filenameget,filenameput)
在方法二基础上改善
#encoding=utf-8
def AnalysisLog(filenameget,filenameput):
    result=""
    try:
        with open(filenameget) as f:
            for line in f.readlines():
                i=line.split()
                if "200" in line:
                    result+=i[0]+i[3]+i[6]+"\n"
            
        
        with open(filenameput,"w") as f:
            f.write(result)
        return "success!"
    except Exception,e:#
        return "failed!",str(e)
 
if __name__=="__main__":
    filenameget=ur"e:\\accesslog.txt"
    filenameput=ur"e:\\put.txt"
    print AnalysisLog(filenameget,filenameput)

转载于:https://www.cnblogs.com/zyy98877/p/8811097.html

你可能感兴趣的文章
别人的双11 & 程序员的双11~
查看>>
互联网垂直社交创业新形态——ThinkSNS
查看>>
C#中两个冒号(::)的作用
查看>>
sed指定行范围匹配(转贴!)
查看>>
如何在tomcat下用EL表达式${param.xxx}属性获取parameter中文避免乱码
查看>>
线性表之栈与队列
查看>>
Git撤销修改
查看>>
项目管理实施流程(八)系统运维
查看>>
ipv4及ipv6及tcp的头部结构
查看>>
win7图片目录位置
查看>>
Maven
查看>>
FastDFS之集群部署
查看>>
Centos6.3系统语言设置
查看>>
我的友情链接
查看>>
javascript不可用的问题探究
查看>>
[置顶] jQuery乱谈(五)
查看>>
have sth done/doing的区别
查看>>
paste用法
查看>>
《java开发实战经典》读书笔记——第3章 Java基础程序设计之数据类型划分20151026...
查看>>
C. Tanya and Toys_模拟
查看>>