with Open之自定义类型(迭代器)应用
1 import time
2 class Open: #自定制一个Open类
3 def __init__(self,filepath,mode = 'r',encoding='utf-8'):
4 print('初始化函数')
5 self.x = open(filepath,mode = mode,encoding=encoding) #创建一个文件句柄
6 self.filepath = filepath
7 self.mode = mode
8 self.encoding = encoding
9 def write(self,line):
10 t = time.strftime('%Y-%m-%d-%X')
11 self.x.write('%s %s'%(t,line))
12 def read(self):
13 return self.x.read()
14 def __getattr__(self, item):
15 return getattr(self.x,item)
16 def __enter__(self): #只要我with 类名()就可被调用了
17 print('紧接init函数之后执行')
18 return self
19 def __exit__(self, exc_type, exc_val, exc_tb):
20 print('exc_type',exc_type)
21 print('exc_val', exc_val)
22 print('exc_tb', exc_tb)
23 self.x.close()
24
25 # f = Open('b.txt','r+')
26 # f.write('[error] ddddddd\n')
27 # f.write('[error] ddddddd\n')
28 # f.write('[error] ddddddd\n')
29 # f.write('[error] ddddddd\n')
30 # f.write('[error] ddddddd\n')
31 with Open('b.txt','w',encoding='utf-8') as f_write:
32 f_write.write('[error] ddddddd\n')
33 f_write.write('[error] ddddddd\n')
34 f_write.write('[error] ddddddd\n')
35 with Open('b.txt','r',encoding='utf-8') as f_read:
36 f = f_read.read()
37 print (f)
38 print('读取完成了')