首页 > 编程语言 > 详细

每天一点小进步(2):python 大文件处理

时间:2020-05-09 21:03:22      阅读:46      评论:0      收藏:0      [点我收藏+]

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

如果满足条件写入新文件中,对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方式可以限制每次读取文件的大小,但是不满足按行读取的要求,所以忽略。

每天一点小进步(2):python 大文件处理

原文:https://www.cnblogs.com/wx2017/p/12859684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!