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)

python实战,的更多相关文章

  1. zeromq 学习和python实战

    参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html   原理解读 zeromq只是一层针对socke ...

  2. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  3. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  4. python实战--数据结构二叉树

    此文将讲述如何用python实战解决二叉树实验 前面已经讲述了python语言的基本用法,现在让我们实战一下具体明确python的用法 点击我进入python速成笔记 先看一下最终效果图: 首先我们要 ...

  5. 再一波Python实战项目列表

    前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...

  6. python实战:用70行代码写了一个山炮计算器!

    python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...

  7. python实战博客

    2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...

  8. python实战提升--1

    #python实战提升 1. 如何在列表.字典.集合中根据条件筛选数据? python中for _ in range(10)与for i in range(10)有何区别 下划线表示 临时变量, 仅用 ...

  9. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  10. 自然语言处理之中文分词器-jieba分词器详解及python实战

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

随机推荐

  1. Axure(一)

    axure1.原型工具 2.软件开发 1.可行性分析2.需求分析    产品经理(和甲方对接需求,)    乙方     --   甲方 ps(专业性强,精美)  设计师        html(可变 ...

  2. centos 7 SVN安装脚本搭建主从同步灵活切换

    svn 脚本下载 http://opensource.wandisco.com/subversion_installer_1.9.sh 2019-Aug-20 12:20:4810.1Kapplica ...

  3. poj 1458 Common Subsequence(dp)

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46630   Accepted: 19 ...

  4. Linux系统吃“内存”现象

    而当我们使用free命令查看Linux系统内存使用情况时,会发现内存使用一直处于较高的水平,即使此时系统并没有运行多少软件.这正是Windows和Linux在内存管理上的区别,乍一看,Linux系统吃 ...

  5. yum源遇到的问题

    1.在配置CentOS的本地yum源时,所遇到的问题,本地yum设置失败 步骤: vim /etc/yum.repos.d/local.repo  设置本地源  可能会遇到本地源问题,注意使用tab键 ...

  6. 多线程与UI操作(二)

    为了让程序尽快响应用户操作,在开发Windows应用程序时经常会使用到线程.对于耗时的操作如果不使用线程将会是UI界面长时间处于停滞状态,这种情况是用户非常不愿意看到的,在这种情况下我们希望使用线程来 ...

  7. 创建CUDA项目

    输出选择X64 .cu文件属性: 常规-项类型:CUDA C/C++ 项目属性: 平台:活动(x64) CUDA C/C++ - Common-Target Machine Platform: 64- ...

  8. svn提交报错 解决方法

    1.先clean 2.删除 .lock文件 3.update项目 4.先还原文件,然后update 接着commit

  9. Werkzeug(Flask)之Local、LocalStack和LocalProxy

  10. RFID-RC522射频

    与Arduino的接线方法: 米其林编程: