python读文件的readline()函数有个设定很蠢。当它读完最后一行后,不会判断自己读到最后一行了,如果不让它停止,它会一直读空行。
网上搜到的方法全都是写个判断,如果readline()读到空行就算文件末尾了。这种方法显然也很蠢:如果我读的文件中有空行怎么办?
真正有效的方法是:
with open(path,'rb') as f:
N=-1 #用N记录当前读取的行号(空行不算在内)
f.seek(0,2) #指针移动到文件末尾
size=f.tell() #此时指针的位置即文件末尾的位置
f.seek(0,0) #把指针移回文件开头
while f.tell()<size: #如果指针在size之前
s=f.readline() #用readline()读一行
if s.strip()=='': #如果读到的是空行
continue #跳过该行
N+=1 #行号+1