精华内容
下载资源
问答
  • python读取文件最后一行

    万次阅读 2019-06-21 18:03:07
    处理文件时,一个常见的需求就是读取文件最后一行。那么这个需求用python怎么实现呢?一个朴素的想法如下: with open('a.log', 'r') as fp: lines = fp.readlines() last_line = lines[-1] 即使不考虑异常处理...

    处理文件时,一个常见的需求就是读取文件的最后一行。那么这个需求用python怎么实现呢?一个朴素的想法如下:

    with open('a.log', 'r') as fp:
        lines = fp.readlines()
        last_line = lines[-1]
    

    即使不考虑异常处理的问题,这个代码也不完美,因为如果文件很大,lines = fp.readlines()会造成很大的时间和空间开销。

    解决的思路是用将文件指针定位到文件尾,然后从文件尾试探出一行的长度,从而读取最后一行。代码如下:

    def __get_last_line(self, filename):
        """
        get last line of a file
        :param filename: file name
        :return: last line or None for empty file
        """
        try:
            filesize = os.path.getsize(filename)
            if filesize == 0:
                return None
            else:
                with open(filename, 'rb') as fp: # to use seek from end, must use mode 'rb'
                    offset = -8                 # initialize offset
                    while -offset < filesize:   # offset cannot exceed file size
                        fp.seek(offset, 2)      # read # offset chars from eof(represent by number '2')
                        lines = fp.readlines()  # read from fp to eof
                        if len(lines) >= 2:     # if contains at least 2 lines
                            return lines[-1]    # then last line is totally included
                        else:
                            offset *= 2         # enlarge offset
                    fp.seek(0)
                    lines = fp.readlines()
                    return lines[-1]
        except FileNotFoundError:
            print(filename + ' not found!')
            return None
    

    其中有几个注意点:

    1. fp.seek(offset[, where])中where=0,1,2分别表示从文件头,当前指针位置,文件尾偏移,缺省值为0,但是如果要指定where=2,文件打开的方式必须是二进制打开,即使用’rb’模式
    2. 设置偏移量时注意不要超过文件总的字节数,否则会报OSError
    3. 注意边界条件的处理,比如文件只有一行的情况

    原文连接:python读取文件最后一行

    展开全文
  • python 读取文件最后一行

    千次阅读 2012-02-21 16:58:33
    /usr/bin/env python #-*-coding:utf8-*- #----- william -------- import os,sys,re def readend():  os.chdir('/etc/openvpn/sn10001/etc/')  files = open('server.conf','r')  i = -1

    #!/usr/bin/env python
    #-*-coding:utf8-*-
    #----- william --------
    import os,sys,re


    def readend():

        os.chdir('/etc/openvpn/sn10001/etc/')
        files = open('server.conf','r')
        i = -1                                  
        while True:
            i = i - 1                           
            files.seek(i,2)                     
            if files.read(1) == '\n':          
                 break                          


        print files.readline().strip()       



    if __name__ == "__main__":
        read()
        readend()
    展开全文
  • python读取文件最后一行两种方法

    千次阅读 2018-09-27 13:58:00
    1)常规方法:从前往后依次读取 步骤:open打开文件。... 读取文件,把文件所有读入内存。 遍历所有,提取指定的数据。 优点:简单,方便 缺点:当文件大了以后时间太慢,无法忍受 2)推荐方法:...

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

                  步骤:open打开文件。

                              读取文件,把文件所有行读入内存。

                              遍历所有行,提取指定行的数据。

                  优点:简单,方便

                  缺点:当文件大了以后时间太慢,无法忍受

      2)推荐方法:

                   步骤:open打开日志文件。

                              移动文件读取指针到文件末尾。

                              从后往前移动指针直到合适的位置。

                              读取文件,提取指定行的数据。

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

    代码实现:

     1 fname = 'test.html'
     2 with open(fname, 'r', encoding='utf-8') as f:  # 打开文件
     3     lines = f.readlines()  # 读取所有行
     4     first_line = lines[0]  # 取第一行
     5     last_line = lines[-1]  # 取最后一行
     6     print('文件' + fname + '第一行为:'+ first_line)
     7     print('文件' + fname + '最后一行为:' + last_line)
     8  
     9  
    10 with open(fname, 'rb') as f:  # 打开文件
    11     # 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始,只能seek(offset,0)
    12     first_line = f.readline()  # 取第一行
    13     offset = -50  # 设置偏移量
    14     while True:
    15         """
    16         file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。
    17         如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。 
    18         """
    19         f.seek(offset, 2)  # seek(offset, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
    20         lines = f.readlines()  # 读取文件指针范围内所有行
    21         if len(lines) >= 2:  # 判断是否最后至少有两行,这样保证了最后一行是完整的
    22             last_line = lines[-1]  # 取最后一行
    23             break
    24         # 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
    25         # 所以off翻倍重新运行,直到readlines不止一行
    26         offset *= 2
    27     print('文件' + fname + '第一行为:' + first_line.decode())
    28     print('文件' + fname + '最后一行为:' + last_line.decode())
    View Code

     

         

    转载于:https://www.cnblogs.com/liushaohui/p/9712687.html

    展开全文
  • python读取文件最后一行两种方式1)常规方法:从前往后依次读取步骤:open打开文件。读取文件,把文件所有行读入内存。遍历所有行,提取指定行的数据。优点:简单,方便缺点:当文件大了以后时间太慢,无法忍受2)...

    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())

    print('文件' + fname + '最后一行为:' + last_line.decode())

    展开全文
  • 本文实例讲述了Python实现读取文件最后n的方法。分享给大家供大家参考,具体如下:# -*- coding:utf8-*-import osimport timeimport datetimeimport mathimport stringdef get_last_line(inputfile) :filesize = ...
  • python读取文件首行和最后一行

    千次阅读 2018-06-24 08:09:00
    python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件。 读取文件,把文件所有行读入内存。 遍历所有行,提取指定行的数据。 优点:简单,方便 缺点:当文件大了以...
  • 主要介绍了Python实现读取文件最后n的方法,涉及Python针对文件的读取、遍历与运算相关操作技巧,需要的朋友可以参考下
  • python 读取文件最后一行

    千次阅读 2019-06-25 22:01:59
    with open(fname, 'r', encoding='utf-8') as f: # 打开文件 lines = f.readlines() # 读取所有行 first_line = lines[0] # 取第一行 last_line = lines[-1] # 取最后一行 print('文件' + fname...
  • 广告关闭2017年12月,云+社区对外发布...pos = pos - 1 try: f.seek(pos, 2) #从文件末尾开始读 if f.read(1) == n:break except: #到达文件一行,直接读取,退出 f.seek(0, 0) print f.readline().strip() retur...
  • txt文件小#coding:utf-8 ...输出为:文件一行最后一行 '''fname = 'test.txt' with open(fname, 'r') as f: #打开文件 lines = f.readlines() #读取所有行 first_line = lines[0] #取第一行 last_line = lines[-
  • 一行一行得从文件读数据,显然比较慢;不过很省内存带缓存的文件读取 readlines 速度最快1. 最基本的读文件方法:?# File: readline-example-1.pyfile = open("sample.txt")while 1:line = file.readline...
  • python读取文件最后n

    千次阅读 2013-08-05 19:47:00
    读取最后一行: #返回文件最后一行函数 def get_last_line(inputfile) : filesize = os.path.getsize(inputfile) blocksize = 1024 dat_file = open(inputfile, 'r') last_line = "" if filesize > block...
  • [work] python读取txt文件最后一行

    千次阅读 2019-01-11 11:57:46
    txt文件小 ...输出为:文件一行最后一行 ''' fname = 'test.txt' with open(fname, 'r') as f: #打开文件 lines = f.readlines() #读取所有行 first_line = lines[0] #取第一行 last_line = l...
  • 以下是我获取了改文件 pswpath = dev.GetPackageDirPath()+"\\download\\ascii\\"+ipaddr+"\\shadow" 我需要读取shadow的最后一行并且删除它 但不影响其他数据该怎么写
  • Python读取文件一行之linecache模块

    千次阅读 2016-11-01 10:59:58
    尝试优化内存,在使用缓存cache读取文件的某一行时,可以使用Python的linecache模块。用法: import linecache linecache.getline(filename,lineno) # filename为文件名 # lineno为要读取的行号 ...
  • python里面,读取或写入csv文件时,首先要import csv这个库,然后利用这个库提供的方法进行对文件的读写。 1、获取每一行 读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对...
  • Python读取文件内容

    万次阅读 多人点赞 2018-12-18 16:27:54
    Python 读取文件内容
  • I have a file called test which has the contents:abcdefgI am using the following python code to read this file line by line and print it out:with open('test.txt') as x:for line in x:print(x.read())The...
  • 主要介绍了python读取csv文件指定的方法详解,需要的朋友可以参考下
  • 所以我想从文件读取并将其中的每一行放入列表中.假设我有一个名为MyFile.txt或MyFile.csv的文件,其中包含以下三行数字/小数:49.55,2,77.09,18,1,2.34,32.1133,11.22,33.21,56,76.558,9,44.7,90.99,12.21,1.01我...
  • # -*- coding: utf-8 -*-file =open('/Users/april_chou/Desktop/WorkSpace/Selenium/seleniumTest/test.txt','r')context = file.read()print('read格式:')print(context)file.close()print()file =open('/Users/...
  • Python读取文件中关键字的一行和下一行 filename = 'E:/ETL/舟山.txt' # 读取文件 pos = [] Efield = [] # count = len(open(filename,'r',encoding = 'utf-8').readlines()) # print(count) fout = open('E:/ETL/...
  • python文件读取一行一行

    千次阅读 2016-07-29 13:15:13
    f=file('a.txt') for eachline in f: print eachline

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,086
精华内容 70,034
关键字:

python读取文件最后一行

python 订阅