码迷,mamicode.com
首页 > 其他好文 > 详细

with与上下文管理器

时间:2018-12-31 14:43:48      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:file   imp   例子   nbsp   path   pre   context   rgs   ini   

with主要为了解决资源释放问题,可以简化代码,下面是两种应用with的例子:

1、通过重写__enter__和__exit__方法实现:

 1 # coding:utf-8
 2 
 3 class File(object):
 4     def __init__(self, filename, mode):
 5         self.filename = filename
 6         self.mode = mode
 7         
 8     def __enter__(self):
 9         print("enter")
10         self.f = open(self.filename, self.mode)
11         return self.f
12         
13     def __exit__(self, *args):
14         print("exit")
15         self.f.close()
16         
17         
18 with File("out.txt", "w") as f:
19     f.write("Happy New Year!")

2、通过上下文管理器实现:

 1 # coding:utf-8
 2 
 3 from contextlib import contextmanager
 4 
 5 @contextmanager
 6 def my_open(path, mode):
 7     f = open(path, mode)
 8     yield f
 9     f.close()
10     
11 
12 with my_open("out1.txt", "w") as f:
13     f.write("hello eric")

 

with与上下文管理器

标签:file   imp   例子   nbsp   path   pre   context   rgs   ini   

原文地址:https://www.cnblogs.com/eric818/p/10201942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!