首页 > 编程语言 >Python 读取文件首行和最后一行

Python 读取文件首行和最后一行

时间:2023-05-22 15:02:19浏览次数:36  
标签:文件 读取 Python lines 首行 fname offset line

常规方法:从前往后依次读取

步骤: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)

推荐方法:

步骤:open打开日志文件。 移动文件读取指针到文件末尾。 从后往前移动指针直到合适的位置。 读取文件,提取指定行的数据。

优点:时间相对固定,适合处理大文件

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())
    print('文件' + fname + '最后一行为:' + last_line.decode())

 

标签:文件,读取,Python,lines,首行,fname,offset,line
From: https://www.cnblogs.com/hankyoon/p/17420631.html

相关文章

  • python从视频中导出音频
     pipinstallffmpeg pipinstallmoviepy  (wind_2021)L:\>(wind_2021)L:\>(wind_2021)L:\>pipinstallffmpegLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleCollectingffmpegDownloadinghttps://pypi.tuna.tsinghua.e......
  • python实现kafka收到消息然后在通过websockt发送给其他服务器的方法(异步调用并且收到
    importasyncioimportthreadingfromkafkaimportKafkaConsumerimportwebsocketsconnected=set()asyncdefhandler(websocket,path):connected.add(websocket)whileTrue:awaitasyncio.sleep(1)defstart_kafka():consumer=KafkaC......
  • 【PYTHON】pandas字符替换
    处理文本数据时,常见的存储格式为textfile格式,对应行分隔符为"\n",列分隔符为"\t"。而大家往往不会直接使用txt格式文件进行日常操作,Excel更为简便通用。因此,如果我们需要处理的Excel数据中,某个取值内出现了"\t"或"\n"或"\r\n"符号,转为txt格式文件处理将出现数据错位的情况......
  • python学习笔记32:操作sqlite数据库
    importsqlite3#1.创建数据库连接#如果test.db存在,则建立连接,返回connect对象#如果test.db不存在,则新建数据库,再建立连接,返回connect对象conn=sqlite3.connect(database='test.db')#2.创建cursor对象cursor=conn.cursor()#SQL指令sql='''......
  • Python基础知识一
    1:print输出信息  例子: ( 所有的标点符号都要是英文状态下输入,要不然会报错)print(“helloworld”)注意:python和python32:ipython在python前加i,此命令拥有和python类似的功能,但同时拥有linux下执行命令的功能ipython或者ipython33:注释在python中“#”右边的字符为注释,......
  • Python爬虫以及数据可视化分析之某站热搜排行榜信息爬取分析
    目录前言一,确定目标二,发送请求三,解析数据四,保存数据pyecharts进行可视化“某站”数据排名前10视频类型“某站”标题标签可视化“某站”喜欢视频分类概况总结前言本项目将会对“某站”热搜排行的数据进行网页信息爬取以及数据可视化分析本教程仅供学习参考!首先,准备好相关库requ......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,且打印出......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运......
  • python 基本数据类型以及内置方法(有这一篇就够了)
    一、数据类型介绍在Python中,数据类型是区分数据的种类和存储方式的标识符。它定义了数据的取值范围、占用空间大小、可操作特性等。Python中常见的数据类型包括数字、字符串、列表、元组、集合和字典等。数据类型在编程中的作用主要有以下几个方面:内存空间的管理:不同的数据......
  • python的守护线程(简介、作用及代码实例)
    转载:(14条消息)python的守护线程(简介、作用及代码实例)_python守护线程的作用_HXH.py的博客-CSDN博客python守护线程简介守护线程的理解:如果当前python线程是守护线程,那么意味着这个线程是“不重要”的,“不重要”意味着如果他的主进程结束了但该守护线程没有运行完,守护进程就会被......