在用python处理文件的时候可能会碰到计算总行数和读取某行内容的情况。
计算文件行数
最简单的办法是把文件读入一个大的列表中,然后统计列表的长度。
例如:
count = len(open(filepath,’rU’).readlines())
不过文件如果很大,那么这个代码可能很慢,也可能失效,而且占用瞬时内存,用循环会好点。
count = -1 for count, line in enumerate(open(thefilepath, 'rU')): pass count += 1
另外一种处理大文件比较快的方法是统计文件中换行符的个数 ‘\n ‘(或者包含 ‘\n’ 的字串,如在 windows 系统中)。
count = 0 thefile = open(thefilepath, 'rb') while True: buffer = thefile.read(8192*1024) if not buffer: break count += buffer.count('\n') thefile.close( )
参数 ‘rb’ 是必须的,否则在 windows 系统上,上面的代码会非常慢。
linecache 是专门支持读取大文件,而且支持行式读取的函数库。 linecache 预先把文件读入缓存起来,后面如果你访问该文件的话就不再从硬盘读取。
读取某行内容
测试过 1 G 大小的文件,效率还可以。
import linecache count = linecache.getline(filename,linenum)
用 linecache 读取文件内容
str = linecache.getlines(filename)