资讯专栏INFORMATION COLUMN

python上下面管理工具适用场景及错误处理

89542767 / 401人阅读

  本文主要是给大家介绍了python上下面管理工具适用场景及错误处理实例详细说明,感兴趣的小伙伴可以参考去了解一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪


  前言


  应用前后文管理工具,能让编码更为雅致简约。自然,前后文的管理工具的功效不仅于此,它内部进行体制,能够很好地解决编码出现异常,提高编码的复用性


  1、先看一下最典型的例子,with句子


  #创建一个文件载入字符串数组“Python”
  f=open('123.txt','w')
  f.write("python")
  f.close()
  #使用with句子启用前后文进行文件写入实际操作
  withopen('123.txt','w')asf:
  f.write('python')


  2、什么叫前后文管理工具?


  前后文是context直接翻译的称呼,在系统中用于表明编码实施过程中所处前后左右自然环境,例如在文件操作时,文档必须打开关闭,而文档读写操作就处在文件操作的前后文环境里;


  前后文管理工具,前后文管理工具指的是在这段执行命令以前,实行某些预备处理工作,执行命令以后再执行某些清洁工作。


  前后文管理工具中有enter()和exit()2个方式,enter()方式在实施with后边的句子时实行,通常用于解决操作前内容,特别是一些创建对象,复位等;exit()方式在with里的执行命令完成后实行,通常用于解决某些善后处理扫尾工作,例如文件信息关掉,数据库关掉等。


  3、前后文管理工具的基本原理全过程如下所示:


  调用enter()方式,开展预备处理实际操作


  实行客户实际操作


  调用exit()方式,进行清除实际操作


  4、前后文管理工具的应用领域:


  资源优化配置作用,即文件整理、数据连接、数据库服务器等行为的时候需要关掉网络资源。


  还可以在执行命令前后左右提升作用,类似装饰器,例如编码之前做过权限验证等。


  4.1数据库连接


  import pymysql
  class DBConnection(object):
  def __init__(self,ip,user,passwd,db):
  self.ip=ip
  self.user=user
  self.passwd=passwd
  self.db=db
  def __enter__(self):
  self.conn=pymysql.connect(self.ip,user=self.user,passwd=self.passwd,db=self.db)
  self.cur=conn.cursor()
  return self.cur
  def __exit__(self,exc_type,exc_val,exc_tb):
  self.cur.close()
  self.conn.close()
  with DBConnection('192.168.121.xxx',user="xxx",passwd="123456",db="xxx")as cur:
  cur.execute("select*from studnet;")
  result=cur.fetchall()
  print(result)


  完成DBConnection这个类,每次连接数据库时,只要简单的调用with语句即可,不需要关心数据库的关闭、异常等


  4.2上下文管理器的异常处理


  class MyOpen(object):
  """自定义上下文管理类"""
  def __init__(self,file,mode):
  self._file=file
  self._mode=mode
  def __enter__(self):
  self._handle=open(self._file,self._mode)
  return self._handle
  def __exit__(self,exc_type,exc_val,exc_tb):
  #print('Type:',exc_type)
  #print('Value:',exc_val)
  #print('TreacBack:',exc_tb)
  self._handle.close()
  print("异常已被处理")
  return True
  #读的模式打开文件,进行写操作,不支持
  with MyOpen('123.txt','r')as f:
  f.write('python')
  #输出:
  异常已被处理
  with语法不仅可以简化资源操作的后续清除操作,还可以代替try/finally进行异常处理
  当with中执行的语句发生异常时,异常信息会被发送到exit()方法的参数中,exit()方法有如下三个参数:
  exc_type:异常类型
  exc_val:异常值
  exc_tb:异常回溯追踪


  这三个参数都与异常有关,with语句会把异常的exc_type,exc_val和exc_tb传递给exit()方法,它让exit()方法来处理异常,如果exit()返回的是True,那么这个异常就被忽略,并按照我们定义的方式进行抛出。如果exit()返回的是True以外的任何东西,那么这个异常将被with语句抛出。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129059.html

相关文章

  • 真假美猴王-Numpy数据与Python数组的区别与联系

    摘要:下文统一称为数组是存储单一数据类型的多维数组同语言数组直接保存数值而则是能够对数组进行处理的函数。动态数据类型与的数组和的这些不可变数据类型的适用场景等可变数据类型适用于需要不断对原始数据进行修改的场景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一个矩阵计算包,功能类似ma...

    邹强 评论0 收藏0
  • 商业银行接口自动化测试结果分析方法与装置

    摘要:接口测试结果归类分析方法基于接口测试结果模型化和组织级的错误码库非缺陷知识库,本专利的方法及装置将接口测试的结果分类分析,输出概要表和错误分类表。 详细介绍技术背...

    nidaye 评论0 收藏0
  • PyCon China 深圳站精彩回顾(附PPT视频)

    摘要:月日,第六届大会在深圳召开。这是这次大会的第二站活动,第一站已在上海成功举办。深圳站视频及,请在公众号后台回复,获取分享链接。据介绍,目前支持多种开发库,如内置和等。该协议的推出,是为了统一标准,提高效率。 本文为 PyChina 和「编程派」联合首发,作者为 EarlGrey。「编程派」是一个专注 Python 学习交流的微信公众号。 9 月 25 日,第六届 PyCon China...

    lykops 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<