Python 读取文件的最后一行
想象一下我有一个Python 读取文件的最后一行,python,Python,想象一下我有一个 Xpto,50,30,60 Xpto,a,v,c Xpto,1,9,0 Xpto,30,30,60 该txt文件可以附加很多次,当我打开该文件时,我只想得到txt文件最后一行的值。。。如何在python上实现这一点?阅读最后一行?不确定是否有特定于python的实现,但以一种与语言无关的方式,您要做的是跳过(查找)到文件的末尾,然后按倒序读取每个字符,直到到达文件正在使用的换行符,通常是一个值为13的字符。只需从这一点向前读到文件的最后一行,您就可以看到文件中的最后一行。我想
Xpto,50,30,60
Xpto,a,v,c
Xpto,1,9,0
Xpto,30,30,60
该txt文件可以附加很多次,当我打开该文件时,我只想得到txt文件最后一行的值。。。如何在python上实现这一点?阅读最后一行?不确定是否有特定于python的实现,但以一种与语言无关的方式,您要做的是跳过(查找)到文件的末尾,然后按倒序读取每个字符,直到到达文件正在使用的换行符,通常是一个值为13的字符。只需从这一点向前读到文件的最后一行,您就可以看到文件中的最后一行。我想我的答案很遗憾被忽略了。:-) 如果您在unix设备上,
os.popen(“tail-10”+
readlines()
可能会
这是最快的方式。否则,
取决于您希望它的健壮程度
是到目前为止提出的方法将
一切都会以这样或那样的方式倒下。
在最短的时间内实现鲁棒性和速度
你可能想要的普通案例
类似于对数搜索:
使用file.seek转到文件末尾
减去1000个字符,读入,
检查它包含多少行,然后
若要减少3000个字符,请读入
2000个字符,数一数行,然后
EOF减7000,读取4000
字符、数行等。
直到你有尽可能多的台词
需要。但如果你能肯定的话
它总是在文件上运行
使用合理的线路长度,您可以
我不需要
你也可能会找到一些灵感
在unix的应用程序中
tail
命令
f.seek(pos,2)
查找相对于文件结尾的“pos”。
为pos尝试一个合理的值,然后readlines()并获取最后一行
您必须说明何时“pos”不是一个好的猜测,即假设您选择300,但最后一行是600个字符长!在这种情况下,只要用合理的猜测再试一次,直到捕捉到整条线。(这种最坏的情况应该非常罕见)嗯,为什么不直接搜索到文件的末尾并一直读到遇到换行符
i=0
while(1):
f.seek(i, 2)
c = f.read(1)
if(c=='\n'):
break
从文件末尾向后一次读取一个字符非常昂贵。考虑一下你必须做些什么来实现这一目标。不确定在现实生活中会有多慢。无论如何,操作系统可能会对其进行优化,当您获取一个字节时,它可能会将整个扇区从硬盘驱动器交换到内存中。它能读得比一个扇区还少吗?除非您的最后一行是多个扇区,否则您可能不会注意到减速。请参阅此问题的答案:。重复的