zoukankan      html  css  js  c++  java
  • 每天一点小进步(2):python 大文件处理

    对一个大文件进行筛选处理

    如果满足条件写入新文件中,对python的几种方式进行执行时间对比结果如下:

    方法一:

    import time
    start = time.clock()
    with open('/Users/test.txt', 'wb') as p:
    	with open('/Users/test_access.log', 'rb') as f:
    		for chunk in f:
    			if '/userrank/player_live_rank' in chunk.decode():
    				p.write(chunk)
    	f.close()
    p.close()
    seconds = time.clock() - start
    print(seconds)
    

    执行时间0.889576s

    方法二:

    import time
    start = time.clock()
    p = open('/Users/test.txt', 'wb')
    f = open('/Users/test_access.log', 'rb')
    while True:
    	line = f.readline()
    	if line:
    		if '/userrank/player_live_rank' in line.decode():
    			p.write(line)
    	else:
    		break
    f.close()
    p.close()
    seconds = time.clock() - start
    print(seconds)
    

    执行时间0.979271s

    使用with的方式比直接readline要快一些,文件越大,效果越明显。

    备注:

    大文件的读取不考虑readlines方式,它一次性将文件读取到内存中,会耗光内存。

    read方式可以限制每次读取文件的大小,但是不满足按行读取的要求,所以忽略。

  • 相关阅读:
    shell 案例
    linux 软链接和硬链接区别
    mac安装使用nginx
    Leetcode SQL_#176_第二高的薪水
    南邮ctf web题记录(上)
    CTFHub Web技能树
    XCTF web 新手练习区
    诊断工具--arthas使用教程
    prometheus--监控工具
    无状态状态机--cola stateMachine
  • 原文地址:https://www.cnblogs.com/wx2017/p/12859684.html
Copyright © 2011-2022 走看看