业务场景:在一个目录里,有许多日志文件,里面是一条条的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. java获取时间戳

    package com.ycy.test; import java.text.SimpleDateFormat; import java.util.Date; public class ItemsCo ...

  2. Shape-in​​side css新属性 几何图形的实现

    https://www.w3cplus.com/css3/css-shapes-101.html

  3. 激活webstorm(作为一个伪前端,偶尔用用)

    推荐博客:https://blog.csdn.net/voke_/article/details/76418116 我试的方法一.

  4. GRUB2 分析 (四)

    接上一篇 kernel.img由startup.S以及一堆c文件编译而成.这是一个ELF格式的文件.(其实前面的boot.img. diskboot.img.lzma_decompress.img本来 ...

  5. js 判断是ie浏览器

    if (!+[1,]) { //IE window.event.returnValue = false; } else { return false; }

  6. 怎样让.bat文件直接运行不需要右键管理员权限

    :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2&g ...

  7. iOS日常学习 - 如何配置.gitignore文件

    文章为转载学习,原文地址 为什么要配置.gitigore 在我们使用git的过程当中,不是任何文件都需要commit到本地或者远程仓库的,比如一些三方库文件. 那么作为一个git新手,很多人不知道如何 ...

  8. MySQL表损坏修复【Incorrect key file for table】

    今天机房mysql服务器异常关机,重新启动后报错如下: -- :: [ERROR] /usr/local/mysql/bin/mysqld: Incorrect key file for table ...

  9. MySQL修改max_allowed_packet

    因mysql从库报错Last_IO_Error: Got a packet bigger than 'max_allowed_packet' bytes mysql> show slave st ...

  10. JAVA小工具打包

    D: cd D:\xxx\IPOSpider javac -d bin/ src/com/xxx/IPOSpider.java src/com/xxx/ConfigProperties.java -c ...