#coding=UTF-8
#需求:读取日志文件,统计错误行数,写入日志
#封装:读文件的三种方式
class File_op():
def __init__(self,path,mode):
self.path=path
self.mode=mode
self.file=open(self.path,self.mode)
#1、readines,读全部内容,并返回一个列表。
def read_line1(self):
#将每一行读取为list形式
lines=self.file.readlines()
return lines
def str_op1(self,lines=[]):
j=0
#遍历每一行,匹配字符串切片,是否以[error]开头
for line in lines:
line=str(line)
if line[0:7]=="[error]":
print "第%s行,是错误日志"%(lines.index(line))
j+=1
else:
pass
return u"共有%s行错误日志"%j
#2、逐行读取
def read_line2(self):
line=self.file.readline()
j=0
while line:
if line[0:7]=="[error]":
j+=1
line=self.file.readline()
return u"共有%s行错误日志"%j
#3\for line in file:
def read_line3(self):
j=0
for line in self.file:
if line[0:7]=="[error]":
j+=1
return u"共有%s行错误日志"%j
# read()
def read(self,size):
return self.file.read(size)
# write()
def write(self,str):
self.file.write(str)
self.close_file()
# close
def close_file(self):
self.file.close()
path="E:\PycharmProjects\untitled\jclx\error.log"
mode="a"
f=File_op(path,mode)
# print f.read(10)
# str="11111111111111\n"
f.write(str)
# 题一:
# 将1-9的数组成正方形输入到文件中
a = [1,2,3,4,5,6,7,8,9]
tmp = []
for i in range(0,len(a),3):
tmp.append(str(a[i])+","+str(a[i+1])+","+str(a[i+2])+"\n")
file("./a.txt",'w').writelines(tmp)
1,2,3
4,5,6
7,8,9
# 题二:
# 假如txt文件内容为:
# aaa,bbb,ccc
# ddd,eee,fff
# 我要读取保存到列表中去,显示结果为[[aaa,bbb,ccc],[ddd,eee,fff]]
file=open("./error.log","r")
line=file.readline()
tmp=[]
while line:
ele=line.replace("\n","").split(",")
tmp.append(ele)
line=file.readline()
file.close()
print tmp
# [['aaa', 'bbb', 'ccc'], ['ddd', 'eee', 'fff']]
实现目录递归遍历,查找以.py结尾的文件,并将文件绝对路径存入log.txt文件。
#coding=UTF-8
import os
def py_list1(dir):
file_list=[]
#路径是否存在
if os.path.exists(dir):
#遍历文件及文件夹
for i in os.listdir(dir):
# 如果是文件夹
if os.path.isdir(dir+os.sep+i):
py_list1(dir+os.sep+i)
elif os.path.basename(i)[-3:]=='.py':
#os.path.abspath()绝对路径
file_list.append(os.path.abspath(i))
#file_list.append(i)
return file_list
dir=os.getcwd()
print py_list1(dir)