业务场景:在一个目录里,有许多日志文件,里面是一条条的json数据,格式如下,为防止一个账号被多个ip使用,现在我想知道:哪些用户登录了哪些ip,和哪些ip登录了哪些用户,如果一个ip对应一个用户,就不展示了

import json, os, sys

ip_map = {}
email_map = {}
path = 'E:/GoogleDownload/' #日志路径
type = # :countByIp :countByEmail def countByIp(line):
try:
if line['ip'] in ip_map.keys(): ip_v_map = ip_map[line['ip']]
if line['email'] in ip_v_map.keys():
new_email_count = ip_v_map[line['email']] +
ip_v_map[line['email']] = new_email_count else:
ip_v_map[line['email']] =
ip_map[line['ip']] = ip_v_map else:
ip_v_map = {}
ip_v_map[line['email']] =
ip_map[line['ip']] = ip_v_map
except:
print("countByIp error: %s"%line) def countByEmail(line):
try:
if line['email'] in email_map.keys(): email_v_map = email_map[line['email']]
if line['ip'] in email_v_map.keys():
new_ip_count = email_v_map[line['ip']] +
email_v_map[line['ip']] = new_ip_count else:
email_v_map[line['ip']] =
email_map[line['email']] = email_v_map else:
email_v_map = {}
email_v_map[line['ip']] =
email_map[line['email']] = email_v_map
except:
print("countByEmail error: %s"%line) def getResult(file, type):
fr = open(path+file, "r") line = fr.readline()
line = json.loads(line)
if type == :
countByIp(line)
elif type == :
countByEmail(line)
else:
return i =
while line:
line = fr.readline()
if line == "" or line is None:
continue i +=
line = json.loads(line[:-])
if type == :
countByIp(line)
elif type == :
countByEmail(line)
else:
return print("读取%s, 行数:%s"%(file,i))
fr.close() if __name__ == "__main__": for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)) and str(f).endswith('.log'):
getResult(str(f), type) fw_ip = open(path + "result_ip.txt", "w")
fw_email = open(path + "result_email.txt", "w") for ip in list(ip_map):
if == len(ip_map[ip]):
ip_map.pop(ip) for ip in list(email_map):
if == len(email_map[ip]):
email_map.pop(ip) fw_ip.write(str(ip_map))
fw_email.write(str(email_map)) fw_ip.close()
fw_email.close()

最后,结果如下

当前ip被哪些用户登录了多少次

当前用户在哪些ip上登录过多少次

python简单日志统计的更多相关文章

  1. python简单日志处理

    简单日志处理 import datetime import re logfile='''58.61.164.141 - - [22/Feb/2010:09:51:46 +0800] "GET ...

  2. python简单词频统计

    任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 文件操作 字典 排序 lambda 代码 import codecs import matplotlib.pyplot as plt from ...

  3. python 简单日志框架 自定义logger

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 通常我们在构建 python 系统时,往往需要一个简单的 logging 框架.python 自 ...

  4. 使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  5. Python基础-使用range创建数字列表以及简单的统计计算和列表解析

    1.使用函数 range() numbers = list(range[1,6]) print (numbers) 结果: [1,2,3,4,5] 使用range函数,还可以指定步长,例如,打印1~1 ...

  6. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  7. python制作简单excel统计报表2之操作excel的模块openpyxl简单用法

    python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...

  8. Kafka实战-实时日志统计流程

    1.概述 在<Kafka实战-简单示例>一文中给大家介绍来Kafka的简单示例,演示了如何编写Kafka的代码去生产数据和消费数据,今天给大家介绍如何去整合一个完整的项目,本篇博客我打算为 ...

  9. 【转】Python之日志处理(logging模块)

    [转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...

随机推荐

  1. Win10应用《纸书科学计算器》更新啦!

    <纸书科学计算器>在2016年8月拿了计算机设计大赛国家一等奖,现在仍记得我在答辩时还给评委们普及了一波UWP平台的知识.受此鼓励,这款应用也不会停下更新的脚步^_^.最近从1.9小幅升级 ...

  2. iOS 动态调用方法

      - (void)bugly { dispatch_async(dispatch_get_global_queue(0, 0), ^{ if (NSClassFromString(@"Bu ...

  3. selenium+python—HTML生成报告代码

    Python自动化测试生成HTML测试报告 HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,他生成易于使用的HTML测试报告. Ubuntu放置位置:输入Pyt ...

  4. Ubuntu中安装Flask模块

    pip3 list——python3下安装的***** #如果列表没有flask pip3 install flask即可

  5. linux中uptime命令获取主机运行时间和查询系统负载信息

    系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...

  6. 在VS2012中采用C++中调用DLL中的函数(4)

    转自:http://www.cnblogs.com/woshitianma/p/3683495.html 这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天 ...

  7. SQL Server 2016 特性和安装方法

    SQL Server 2016 特性: 全程加密技术(Always Encrypted),动态数据屏蔽(Dynamic Data Masking),JSON支持,多TempDB数据库文件,PolyBa ...

  8. 20145215刘俊谦实验五 Java网络编程及安全

    实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验由两人组队完成,20145321曾子誉是我本次实验的搭档,链接为:http://www.cnblog ...

  9. Activiti工作流与spring集成

    一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...

  10. makefile中的word函数作用是什么

    答:用来取单词的函数,示例如下: $(word 1,hello jello yello) 上面的语句执行后的结果为hello,意为取字符串的第一个单词