一. 基础知识
统计指定文件的行数,必须先打开读取文件内容,用到open/文件操作: f=open(‘/tmp/hello’,’w’) #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:’rb’,’wb’,’r+b’等等
读写模式的类型有:
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w 以写方式打开, a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模式打开 (参见 w ) a+ 以读写模式打开 (参见 a ) rb 以二进制读模式打开 wb 以二进制写模式打开 (参见 w ) ab 以二进制追加模式打开 (参见 a ) rb+ 以二进制读写模式打开 (参见 r+ ) wb+ 以二进制读写模式打开 (参见 w+ ) ab+ 以二进制读写模式打开 (参见 a+ )
二. 统计文件行数示例: 1.(小文件) pycharm 开发环境中新建
#coding=utf-8 count = len(open(‘F:\test\test.txt’,’rU’).readlines()) print(count) 上述代码是读取F:\test\test.txt路径下的test.txt文件的内容行数 并在console终端打印出行数 2.(大文件)如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环来处理:
#coding=utf-8 count = -1 for count, line in enumerate(open('F:\daiqinge\dai.txt','rU').readlines()): pass count+=1 print(count) 其中pass语句的意思是空操作,什么也不做 3. (大文件)另外一种处理大文件的方法(统计了换行符的个数)
#coding=utf-8 count = 0 thefile = open('F:\daiqinge\dai.txt', 'rb') while True: buffer = thefile.read(8192*1024) if not buffer: break count += buffer.count('\n') thefile.close( ) print(count+1)
参数’rb’是必须的,否则在windows系统上,上面的代码会非常慢
三. 读取指定文件的内容
(大文件)linecache是专门支持读取大文件,而且支持行式读取的函数库。 linecache预先把文件读入缓存起来,后面如果你访问该文件的话就不再从硬盘读取
1. 读取文件某一行的内容(测试过1G大小的文件,效率还可以)
#coding=utf-8 import linecache count = linecache.getline('F:\daiqinge\dai.txt',2) print(count)
读取文件第2行的内容
2. 读取指定文件的全部内容
用linecache读取文件内容(测试过1G大小的文件,效率还可以)
#coding=utf-8 import linecache content = linecache.getlines('F:\daiqinge\dai.txt') print(content)
content为列表形式,每一行为列表中的一个元素