代码:

 # -*- coding:utf-8 -*-
# 普通版 如果写入的过程中出错 则不会释放资源
def m1():
f = open("test.txt","w")
f.write("hello python")
f.close()
# 进阶版
def m2():
f = open("test2.txt","w")
try:
f.write("hello python2")
except IOError:
print("oops error")
finally:
f.close()
# 高级
def m3():
with open("test3.txt","w") as f:
f.write("hello python3")
m1()
m2()
m3() # 上下文管理器
# 任何实现了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器,上下文管理器对象可以使用 with 关键字。显然,文件(file)对象也实现了上下文管理器。
class File(object):
def __init__(self,filename,model):
self.filename = filename
self.model = model def __enter__(self):
print("--enter--")
self.f = open(self.filename,self.model)
return self.f def __exit__(self, *args):
print("--exit--")
self.f.close() with File("test4.txt","w") as f:
f.write("hello python4") # 输出 --enter--
# --exit - -
# 装饰器实现上下文管理器
from contextlib import contextmanager @contextmanager
def my_open(path,model,encod):
f = open(path,model,encoding=encod)
yield f
f.close() with my_open("test5.txt","w",'utf-8') as f:
f.write("contextmanager实现上下文管理器")

最新文章

  1. [Android]ListView学习笔记
  2. 解决ora-00054 Oracle锁表问题
  3. ubuntu NTP server 搭建
  4. Apache+Tomcat+mod_jk负载均衡
  5. OnItemSelectedListener事件与二级联动
  6. 【CCS仿真】如何将CCS仿真时memory中的数据以Hex、Integer、 Long 、Float、 Addressable Unit类型保存到PC
  7. 进入appstore中指定的应用
  8. kibana去掉丑陋的basic验证框,用自定义验证代替。
  9. 安装Hadoop系列 — 安装Eclipse
  10. Java图片上传压缩处理
  11. J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题
  12. Spring第九篇【Spring与Hibernate整合】
  13. BackgroundWorker 组件 -- 进度条
  14. Message": "请求的资源不支持 http 方法“GET”
  15. Luogu P3783 [SDOI2017]天才黑客
  16. java的抽象方法
  17. this作用范围
  18. [ ZooKeeper]ZooKeeper 的功能和原理
  19. 用 ASP.NET MVC 实现基于 XMLHttpRequest long polling(长轮询) 的 Comet(转)
  20. Yearning v1.3.0 发布,Web 端 SQL 审核平台

热门文章

  1. [转帖]为什么需要 Zookeeper
  2. 开发板与pc之间文件传输:kermit and lrzsz
  3. C++中的强制类型转换
  4. 经典例题(Python)
  5. day27——面向对象的总结、异常处理
  6. AVR单片机教程——拨动开关
  7. quartz2.3.0(十三)数据库持久化定时器job任务和trigger触发器,在多个调度器实例情况下,由其它调度器实例恢复执行调度器宕机的job任务
  8. Failed to transfer file: http://repo.maven.apache.org/maven2/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar
  9. Java 理论和实践: 了解泛型 识别和避免学习使用泛型过程中的陷阱
  10. Spring Cloud Alibaba学习笔记(19) - Spring Cloud Gateway 自定义过滤器工厂