首页 > 代码库 > 运维的我要学开发--Python(4)

运维的我要学开发--Python(4)

   本文均来自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