Python文件处理

有一个日志文件,要统计里面每种域名出现的次数

1.1.1.1 www.baidu.comx
1.1.1.2 www.baidu.com
1.1.1.3 www.baidu.com
1.1.1.1 www.baidu.com
1.1.1.2 www.baidu.com

1.1.1.1 www.baidu.com
1.1.1.2 www.baidu.com
1.1.1.1 www.baidu.com2
1.1.1.2 www.baidu.com2

思路:
1.读文件,取到数据
2.过滤空行
3.把字符串切割成list
4.遍历list,统计域名和次数
5.把结果写进字典

# 读文件
f = open("../logs/ip&domain.log", "r", encoding='utf-8')

# 定义一个空字符串
lines = ''
# 遍历文件,过滤空行,把不是空行的填进字符串里
for line in f:
    if line != '\n':
        lines = lines + line

# 分割成list
lineList = lines.split('\n')

# print('lineList', lineList)

# 因为题目是要统计每种域名的请求次数,数据结构是key:value形式,所以这里定义一个字典
dic = {}

# 遍历list
for content in lineList:
    # 1.1.1.1 www.baidu.comx 这种按空格分割
    [ip, domain] = content.split(' ')
    # 取域名和次数填进字典里,域名为None次数+0(因为初始化的时候字典里没有值),取到了域名 次数+1
    # print('before  ', 'domain: ', domain, ' dic[domain]: ', dic.get(domain))
    if dict.get(domain) == None:
        dict[domain] = 0
    else:
        dict[domain] += 1
    # print('after  ', 'domain: ', domain, ' dic[domain]: ', dic.get(domain))
print(dic)

统计结果:

{'www.baidu.comx': 1, 'www.baidu.com': 6, 'www.baidu.com2': 2}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文件读取 整个读取 两个注意点: 使用关键字with可以自动关闭文件流,如果使用file_object = ope...
    刘开心_8a6c阅读 531评论 0 2
  • 文件处理 常用打开文件方式 1.读取文件内容, 模式为 'r' 表示读, 这也是打开的默认方式。 2.如果要创建或...
    江洋林澜阅读 322评论 0 0
  • 打开 → 读/写 → 关闭 文件对象占资源打开之后需关闭读/写操作是参数 基本操作 使用方法open函数两个参数:...
    氢离子游离阅读 160评论 0 1
  • '''文件操作1.打开文件:用open函数,参数为文件路径和打开方式,打开文件返回为fileObject类型 2....
    侯遇山阅读 467评论 0 0
  • 对文件的操作包含三个步骤: 1、打开文件:open 2、操作文件:对文件进行读或写 read/write 3、关闭...
    米兔妮妮阅读 1,613评论 0 0