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('读取完成了')

 

posted @ 2017-04-25 20:28  福临  阅读(197)  评论(0编辑  收藏  举报