python打印文件的前几行或最后几行教程


Posted in Python onFebruary 13, 2020

写一个类似linux head的小工具,在window下用。

head.py 

# -*- coding: UTF-8 -*-
#!/usr/bin/python
# by Jakcing 2019.02.17
# print first n lines or last n lines in big file 
 
 
import sys
import getopt
import linecache
 
 
VERSION="1.1"
 
def get_line_count(filename):
 line_count = 0
 file = open(filename,'r+', encoding='utf-8')
 while True:
 buffer = file.read(8192 * 1024 )
 if not buffer:
  break
 line_count += buffer.count('\n')
 file.close()
 return line_count
 
def read_head_line(flist, line_num):
 for file_name in flist:
 print("===%s===" % file_name)
 f = open(file_name, 'r', encoding='utf-8')
 if(f):
  for i in range(line_num):
  print(f.readline(), end='')
 
 
 
def read_last_line(flist, line_num):
 
 for file_name in flist:
 
 linecache.clearcache()
 line_count = get_line_count(file_name)
 print('===%s=== line count total: %d' % (file_name, line_count))
 line_count = line_count - line_num +1
 print('===%s=== line %d to end' % (file_name, line_count))
 
 
 for i in range(line_num):
  last_line = linecache.getline(file_name, line_count) #从第line_count行读起
  print('line[%d]:%s' % (line_count, last_line), end='')
  line_count += 1
 
 
 
try:
 opts, args = getopt.getopt(sys.argv[1:], "hvn:t:", ["help", "output=", "numline=", "tail=", "version"])
except getopt.GetoptError:
  print("argv error,please input")
 
for cmd, arg in opts:
 if cmd in ("-h", "--help"):
 print("usage: head.py -n number filename \nor head.py -t number filename")
 sys.exit()
 elif cmd in ("-n", "--numline"): #打印文件开头的line_num行
 line_num=int(arg)
 file_names=args[:]
 read_head_line(file_names, line_num)
 elif cmd in ("-t", "--tail"): #打印文件结尾的line_num行
 line_num=int(arg)
 file_names=args[:]
 read_last_line(file_names, line_num)
 
 elif cmd in ("-v", "--version"):
 print("%s %s" % (sys.argv[0], VERSION))
 
sys.exit()

以上这篇python打印文件的前几行或最后几行教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python制作微信跳一跳辅助
Jan 31 Python
python中的常量和变量代码详解
Jul 25 Python
Django csrf 验证问题的实现
Oct 09 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
python 提取文件指定列的方法示例
Aug 07 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
Python find()、rfind()方法及作用
Dec 24 Python
Python创建空列表的字典2种方法详解
Feb 13 #Python
python-docx文件定位读取过程(尝试替换)
Feb 13 #Python
Python 实现向word(docx)中输出
Feb 13 #Python
Python如何把多个PDF文件合并代码实例
Feb 13 #Python
python读取csv文件指定行的2种方法详解
Feb 13 #Python
Python类中self参数用法详解
Feb 13 #Python
python字符串下标与切片及使用方法
Feb 13 #Python
You might like
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
nicejforms——美化表单不用愁
2007/02/20 Javascript
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
RequireJs的使用详解
2017/02/19 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
python错误处理详解
2014/09/28 Python
python查询sqlite数据表的方法
2015/05/08 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
python更新列表的方法
2015/07/28 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
浅析Python函数式编程
2018/10/06 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
c语言常见笔试题总结
2016/09/05 面试题
学习决心书范文
2014/03/11 职场文书
专家推荐信模板
2014/05/09 职场文书
开服装店计划书
2014/08/15 职场文书
党员自我剖析材料
2014/08/31 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL