Python 官方文档:入门教程 => 点击学习
利用python读取文件(针对大文件和小文件两种)的首行(第一行)和末行(最后一行)。脚本借鉴了前人的两种处理思路(在下面的脚本中有注释说明引用出处),并修正了原先两种处理方法中如果文件末尾含有多个空行而返回空行的问题。脚本内容可以从Git
利用python读取文件(针对大文件和小文件两种)的首行(第一行)和末行(最后一行)。脚本借鉴了前人的两种处理思路(在下面的脚本中有注释说明引用出处),并修正了原先两种处理方法中如果文件末尾含有多个空行而返回空行的问题。
脚本内容可以从GitHub上获取:
https://github.com/DingGuodong/linuxBashshellScriptForOps/blob/master/functions/file/getFileLastLine.py
脚本内容如下:
#!/usr/bin/Python
# encoding: utf-8
# -*- coding: utf8 -*-
"""
Created by PyCharm.
File: LinuxBashShellScriptForOps:getFileLastLine.py
User: Guodong
Create Date: 2016/9/1
Create Time: 11:05
"""
import os
# Refer: Http://www.pythonclub.org/python-files/last-line
def get_last_line(inputfile):
filesize = os.path.getsize(inputfile)
blocksize = 1024
dat_file = open(inputfile, 'rb')
last_line = ""
if filesize > blocksize:
maxseekpoint = (filesize // blocksize)
dat_file.seek((maxseekpoint - 1) * blocksize)
elif filesize:
# maxseekpoint = blocksize % filesize
dat_file.seek(0, 0)
lines = dat_file.readlines()
if lines:
last_line = lines[-1].strip()
# print "last line : ", last_line
dat_file.close()
return last_line
# Refer: http://code.activestate.com/recipes/578095/
def print_first_last_line(inputfile):
filesize = os.path.getsize(inputfile)
blocksize = 1024
dat_file = open(inputfile, 'rb')
headers = dat_file.readline().strip()
if filesize > blocksize:
maxseekpoint = (filesize // blocksize)
dat_file.seek(maxseekpoint * blocksize)
elif filesize:
maxseekpoint = blocksize % filesize
dat_file.seek(maxseekpoint)
lines = dat_file.readlines()
if lines:
last_line = lines[-1].strip()
# print "first line : ", headers
# print "last line : ", last_line
return headers, last_line
# My Implementation
def get_file_last_line(inputfile):
filesize = os.path.getsize(inputfile)
blocksize = 1024
with open(inputfile, 'rb') as f:
last_line = ""
if filesize > blocksize:
maxseekpoint = (filesize // blocksize)
f.seek((maxseekpoint - 1) * blocksize)
elif filesize:
f.seek(0, 0)
lines = f.readlines()
if lines:
lineno = 1
while last_line == "":
last_line = lines[-lineno].strip()
lineno += 1
return last_line
# Test purpose
# print get_last_line(os.path.abspath(__file__))
# print print_first_last_line(os.path.abspath(__file__))
# print get_file_last_line(os.path.abspath(__file__))
--end--
--结束END--
本文标题: Python读取文件的最后一行(非空行)
本文链接: https://lsjlt.com/news/189034.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0