本文由我司收集整编,推荐下载,如有疑问,请与我司联系
python
实现文件倒数
N
行读取
2017/11/27 7755
python
并没有直接提供读取文件倒数
N
行的方法
,
自己写了一
个简易
tail
。
性能测试:
返回字符串:
100000
行:
0.219849s
10000
行:
0.024092s
1000
行:
0.004009s
def
tail(file,
taillines=500,
return_str=True,
avg_line_length=None):
“““avg_line_length:
每行字符平均数
,
return_str:
返回类型,默认为字符串,
False
为列
表。
offset:
每次循环相对文件末尾指针偏移数
”““ with open(file, errors=‘ignore’) as f:
if
not
avg_line_length:
f.seek(0,
2)
f.seek(f.tell()
-
3000)
avg_line_length
=
int(3000
/
len(f.readlines()))
+
10
f.seek(0,
2)
end_pointer
=
f.tell()
offset
=
taillines
*
avg_line_length
if
offset
end_pointer:
f.seek(0,
0)
lines
=
f.readlines()[-taillines:]
return
““.join(lines)
if
return_str
else
lines
offset_init
=
offset
i
=
1
while
len(f.readlines())
taillines: location = f.tell() - offset f.seek(location) i += 1 offset = i * offset_init if f.tell() -
offset
0:
f.seek(0,
0)
break
else:
f.seek(end_pointer
-
offset)
lines
=
f.readlines()
if
len(lines)
=
taillines:
lines
=
lines[-taillines:]
return
““.join(lines)
if
return_str
else
linesa=tail(r’C:\Users\admin\Desktop\command.log’,1000,False)tips:
感谢大家的阅读,
本文由我司收集整编。仅供参阅!