运维的我要学开发--Python(4)
时间:2014-05-03 02:00:18
收藏:0
阅读:417
本文均来自Python Cookbook,本博文励志将Cookbook中的string部位,文件,面向对象编程部分完成,本系列博文陆续还会介绍flask框架,每篇博文都以一个个小例子展示。
#-*- coding: utf-8 -*- ‘‘‘ 文件相关的操作: read() open() 两个参数: 第一个:文件路径 第二个:打开文件的模式 常用的文件打开模式: r:文本模式读取 rb:二进制模式读取 w:创建文件并文本模式 wb:创建文件,二进制模式写 rU:通用换行符的文本模式读取文件(独立与该文件所有的断行约定) readline() readlines() write() writelines() ‘‘‘ #读取文本方法一 f = open(‘study1.py‘,‘rb‘) #while True: # line = f.readline() # print line #读取文本方法二 #物理内存足够的情况下使用 for line in f.readlines(): print line #读取文本方法三 #该方法性能和效率更好 for line in f: print line ‘‘‘ 打开文件的一种稳健而严谨的处理方式 ‘‘‘ fine_object = open(‘study1.py‘,‘rU‘) try: for line in fine_object: print line finally: fine_object.close() ‘‘‘ 文件搜索和替换 小例子如下:通过命令行下指定参数对输入文件中指定的文本进行替换 ‘‘‘ def search(): import os,sys #获取输入的参数个数 nargs = len(sys,argv) #判断参数个数是否大于等于3小于等于5 if not 3<= args <=5: #输出参数的使用方法 print "Usage:%s search_text replace_text [infile [outfile]]" % os.path.basename(sys.argv[0]) else: #获取第一个参数 stext = sys.argv[1] #获取第二个参数 rtext = sys.argv[2] #指定输入文件为标准输入 input_file = sys.stdin #指定输出文件是标准输出 output_file = sys.stdout #判断是否有第三个参数,并指定为输入文件 if nargs > 3: input_file = open(sys.argv[3]) #判断是否有第四个参数,并指定为输出文件 if nargs > 4: output_file = open(sys.argv[4]) for s in input_file: #将替换后的 文本输出 output_file.write(s.replace(stext,rtext)) ‘‘‘ 从文件中读取指定的行 两种方法: 方法一:linecache 方法二:循环遍历 ‘‘‘ #方法一 #该方法用于要多次换取指定行的内容 #linecache可对文件内容缓存 #clearcache()用于清楚缓存 #checkcache()确保缓存存放的是最新的数据 import linecache theline = linecache.getline("study1.py",21) print theline #清除缓存 linecache.clearcache() #方法二 #使用于只获取一次特定行的数据 #enumerate返回的是从0开始的数据 def getline(filepath,linenumber): if linenumber < 1: return 0 else: for number,linecontent in enumerate(open(filepath,‘rU‘)): if number == linenumber-1: return linecontent print getline("study1.py",21) ‘‘‘ 计算文件行数 ‘‘‘ #方法一: #此方法不适用用大文件 count = len(open("study1.py",‘rU‘).readlines()) print count #方法二: #适用于大文件 count = -1 for count,line in enumerate(open("study1.py",‘rU‘)): pass print count+1 #方法三 #对于大文件更快的方式(用于换行符是\n发的平台) count = 0 thefile = open("study1.py",‘rb‘) while True: buffer = thefile.read(8192*1024) if not buffer: break count +=buffer.count(‘\n‘) thefile.close() ‘‘‘ python中的计时工具 timeit 使用方法如下: ‘‘‘ import timeit t2 = timeit.Timer("x=range(100)") print t2.timeit()
本文出自 “专注linux” 博客,请务必保留此出处http://forlinux.blog.51cto.com/8001278/1405320
评论(0)