python回到⾸⾏_python读取⽂件⾸⾏和最后⼀⾏python读取⽂件最后⼀⾏两种⽅式
1)常规⽅法:从前往后依次读取
步骤:open打开⽂件。
读取⽂件,把⽂件所有⾏读⼊内存。
遍历所有⾏,提取指定⾏的数据。
优点:简单,⽅便
缺点:当⽂件⼤了以后时间太慢,⽆法忍受
2)推荐⽅法:
步骤:open打开⽇志⽂件。
移动⽂件读取指针到⽂件末尾。
从后往前移动指针直到合适的位置。
读取⽂件,提取指定⾏的数据。
优点:时间相对固定,适合处理⼤⽂件
代码实现
fname = 'test.html'
with open(fname, 'r', encoding='utf-8') as f: # 打开⽂件
lines = f.readlines() # 读取所有⾏
first_line = lines[0] # 取第⼀⾏
last_line = lines[-1] # 取最后⼀⾏
print('⽂件' + fname + '第⼀⾏为:'+ first_line)
print('⽂件' + fname + '最后⼀⾏为:' + last_line)
with open(fname, 'rb') as f: # 打开⽂件
# 在⽂本⽂件中,没有使⽤b模式选项打开的⽂件,只允许从⽂件头开始,只能seek(offset,0)
first_line = f.readline() # 取第⼀⾏
offset = -50 # 设置偏移量
while True:
"""
file.seek(off, whence=0):从⽂件中移动off个操作标记(⽂件指针),正往结束⽅向移动,负往开始⽅向移动。
如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表⽂件最末尾位置。
"""
f.seek(offset, 2) # seek(offset, 2)表⽰⽂件指针:从⽂件末尾(2)开始向前50个字符(-50)
lines = f.readlines() # 读取⽂件指针范围内所有⾏
if len(lines) >= 2: # 判断是否最后⾄少有两⾏,这样保证了最后⼀⾏是完整的
last_line = lines[-1] # 取最后⼀⾏
break
# 如果off为50时得到的readlines只有⼀⾏内容,那么不能保证最后⼀⾏是完整的# 所以off翻倍重新运⾏,直到readlines不⽌⼀⾏
offset *= 2
print('⽂件' + fname + '第⼀⾏为:' + first_line.decode())python怎么读取桌面上的文件
print('⽂件' + fname + '最后⼀⾏为:' + last_line.decode())
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论