21 读取文件最后一行

1,当读取的文件不大时

#coding:utf-8
‘‘‘
fname为所读xx.txt文件
输出为:文件第一行和最后一行
‘‘‘

fname = ‘test.txt‘
with open(fname, ‘r‘) as f:  #打开文件
    lines = f.readlines() #读取所有行
    first_line = lines[0] #取第一行
    last_line = lines[-1] #取最后一行
    print(‘文件%s第一行为:‘ % first_line)
    print(‘文件%s最后一行为:‘% last_line)

2,当文件比较大时,readlines()会一次性读取全部数据到内存,会浪费内存资源。

#coding:utf-8
‘‘‘
f_name为所读xx.txt文件
输出为:文件最后一行
‘‘‘

fname = ‘test.txt‘
with open(fname, ‘r‘) as f:  #打开文件
    first_line = f.readline()  #读第一行
    off = -50      #设置偏移量
    while True:
        f.seek(off, 2) #seek(off, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
        lines = f.readlines() #读取文件指针范围内所有行
        if len(lines)>=2: #判断是否最后至少有两行,这样保证了最后一行是完整的
            last_line = lines[-1] #取最后一行
            break
        #如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
        #所以off翻倍重新运行,直到readlines不止一行
        off *= 2
    print(‘文件%s第一行为:‘ % first_line)
    print(‘文件%s最后一行为:‘% last_line)

原文地址:https://www.cnblogs.com/jeavy/p/9231339.html

时间: 2024-10-14 00:06:16

21 读取文件最后一行的相关文章

读取文件最后一行的两种方式

'''读取文件最后一行''' import os # 小文件:批量读取 def get_last_line(filename='mark.csv'): fullfilename = os.path.join(os.path.dirname(__file__), filename) with open(fullfilename, 'r', encoding='utf-8') as f: lines = f.readlines() # 批量 lastline = lines[-1] return l

shell读取文件每一行的方式

1.使用read命令读取一行数据 while read myline do echo "LINE:"$myline done < datafile.txt 2.使用read命令读取一行数据 cat datafile.txt | while read myline do echo "LINE:"$myline done 3.#读取一行数据 cat datafile.txt | while myline=$(line) do echo "LINE:&qu

类似于c语言读取文件进行解析

$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/'.date('Ym').'/'.date('d').'_error.log';            //$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/201701/19_error.log';                   if(!file_exists($l

关于C语言读取文件时候多读一行

梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) {  fgets(buffer,256,fp);  j++; } 像这样的代码,是很多C语言学者经常犯的错误!! feof()这个函数是用来判断指针是否已经到达文件尾部的.若fp已经指向文件末尾,则feof(fp)函数值为"真",即返回非零值:否则返回0. 对呀!那有什么问题的呢? 其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到

shell读取文件的每一行

写法一: ---------------------------------------------------------------------------- #!/bin/bash while read line do echo $line done < filename(待读取的文件) ---------------------------------------------------------------------------- 写法二: --------------------

shell读取文件的每一行内容并输出【转】

写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的文件) | while read line do echo $line done 写法三: for line in `cat file(待读取的文件)` do echo $line done 说明:for逐行读和while逐行读是有区别的,如: $ cat file aaaa bbbb cccc dddd

C++ 使用string一行一行读取文件

c++ 读取文件中的一行一行数据 通用模板: std::ifstream in(dictpath); if(!in) { std::cout << __DATE__ << " " << __TIME__ << __FILE__ << " " << __LINE__ << ": dict read error" << std::endl; exit(-1

php处理文件,一行一行的读取,并且把没用的行删除。

今天做sitemap.xml.找了个国外的网站,http://www.freesitemapgenerator.com/这个可以生成5000条数据,以前找那个只能生成500条.但是,生成的xml标签中有些是没有用的,如图: 于是想到了php处理文件,一行一行的读取,并且把没用的行删除. 代码如下: <?php  set_time_limit(0); $file=fopen('sitemap.xml','r'); while (!feof($file)){   $line = fgets($fil

Python读取文件的最后一行(非空行)

利用Python读取文件(针对大文件和小文件两种)的首行(第一行)和末行(最后一行).脚本借鉴了前人的两种处理思路(在下面的脚本中有注释说明引用出处),并修正了原先两种处理方法中如果文件末尾含有多个空行而返回空行的问题. 脚本内容可以从GitHub上获取: https://github.com/DingGuodong/LinuxBashShellScriptForOps/blob/master/functions/file/getFileLastLine.py 脚本内容如下: #!/usr/bi