python打印文件的前几行或最后几行教程
写一个类似linuxhead的小工具,在window下用。
head.py
#-*-coding:UTF-8-*-
#!/usr/bin/python
#byJakcing2019.02.17
#printfirstnlinesorlastnlinesinbigfile
importsys
importgetopt
importlinecache
VERSION="1.1"
defget_line_count(filename):
line_count=0
file=open(filename,'r+',encoding='utf-8')
whileTrue:
buffer=file.read(8192*1024)
ifnotbuffer:
break
line_count+=buffer.count('\n')
file.close()
returnline_count
defread_head_line(flist,line_num):
forfile_nameinflist:
print("===%s==="%file_name)
f=open(file_name,'r',encoding='utf-8')
if(f):
foriinrange(line_num):
print(f.readline(),end='')
defread_last_line(flist,line_num):
forfile_nameinflist:
linecache.clearcache()
line_count=get_line_count(file_name)
print('===%s===linecounttotal:%d'%(file_name,line_count))
line_count=line_count-line_num+1
print('===%s===line%dtoend'%(file_name,line_count))
foriinrange(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"])
exceptgetopt.GetoptError:
print("argverror,pleaseinput")
forcmd,arginopts:
ifcmdin("-h","--help"):
print("usage:head.py-nnumberfilename\norhead.py-tnumberfilename")
sys.exit()
elifcmdin("-n","--numline"):#打印文件开头的line_num行
line_num=int(arg)
file_names=args[:]
read_head_line(file_names,line_num)
elifcmdin("-t","--tail"):#打印文件结尾的line_num行
line_num=int(arg)
file_names=args[:]
read_last_line(file_names,line_num)
elifcmdin("-v","--version"):
print("%s%s"%(sys.argv[0],VERSION))
sys.exit()
以上这篇python打印文件的前几行或最后几行教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。