运维的我要学开发--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()
转载于:https://blog.51cto.com/forlinux/1405320