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

上下文与 with语句 (如打开文件open的巧妙写法)

时间:2020-04-13 09:13:27      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:txt   说明   with open   __enter__   表达   包含   try   aaa   With语句   

常规的打开文件读取

try:

  f=open("/erer/123.txt")

  print f.read()

finally:

  f.close()

说明 : 无论打开文件和读取是否成功,都会去执行finally下面关闭连接释放资源的语句

 

使用with语句简写

with后面的写法叫 上下文表达式

with open("/erer/123.txt")  as  f:

  print f.read()

说明: with是包含了上下文的封装,在with 模块下运行(在上文) 代码 建立连接,当代码跑出with的模块,会执行执行(下文) 关闭连接 释放资源

 

注意:  假如在1/我这里报错,那么他就不会继续往下执行print f.read(),而是会执行执行(下文) 关闭连接 释放资源

with open("/erer/123.txt")  as  f:

  1/我

  print f.read()

 

#原理:

class AAA:

  def __enter__(self):    上文函数

    return slef

  def __exit__(self, exc_type , exc_value , tb):   下文函数

    print  "下文函数,执行关闭连接释放资源"

  def test(self):

    print "执行查询"

with AAA as f:     f不是等于AAA,他等于__enter__()上文的返回数据,上面我们返回self,就是AAA()自己

  f.test()   这里就变成self.test() 执行自己的函数

        执行完毕跳出with模块,接着执行下文函数__exit__() 退出连接释放资源,这个函数固定要接受4个变量的,当执行f.test() 出现异常 就会接受4个异常变量,正常执行变量为None,当执行异常,还可以在__exit__()下文函数 学if判断 4个变量 分别是什么执行什么动作

顺序: 先执行 上文函数,接着执行with里面的动作,最后执行下文函数

上下文与 with语句 (如打开文件open的巧妙写法)

标签:txt   说明   with open   __enter__   表达   包含   try   aaa   With语句   

原文地址:https://www.cnblogs.com/kaibindirver/p/12688998.html

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