任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。

例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件。

为了更好地避免此类问题,不同的编程语言都引入了不同的机制。在 Python 中,对应的解决方式是使用 with as 语句操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。
,使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经打开的文件。

首先学习如何使用 with as 语句。with as 语句的基本语法格式为:
with 表达式 [as target]:
代码块

此格式中,用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,该语句会将 expression 指定的结果保存到该变量中。with as 语句中的代码块如果不想执行任何语句,可以直接使用 pass 语句代替。

举个例子,假设有一个 a.txt 文件,其存储内容如下:
C语言中文网
http://c.biancheng.net

在和 a.txt 同级目录下,创建一个 .py 文件,并编写如下代码:
with open(‘a.txt’, ‘a’) as f:
f.write("\nPython教程")
运行结果为:
C语言中文网
http://c.biancheng.net
Python教程

可以看到,通过使用 with as 语句,即便最终没有关闭文件,修改文件内容的操作也能成功。

Python with as用法详解相关推荐

  1. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  2. python的继承用法_python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  3. 【 Python 中 int 用法详解】(转载)

    Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...

  4. Python 中 int 用法详解

    Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...

  5. 信息学奥赛 python 教程_Python在信息学竞赛中的运用及Python的基本用法(详解)

    前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在<算法竞赛入门经典-训练指南>中所说的一样,如果会用 ...

  6. Python中self用法详解

    Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...

  7. Python re模块用法详解

    Python re模块用法详解 在 Python 爬虫过程中,实现网页元素解析的方法有很多,正则解析只是其中之一,常见的还有 BeautifulSoup 和 lxml,它们都支持网页 HTML 元素的 ...

  8. 什么是多态,Python多态及用法详解

    什么是多态,Python多态及用法详解 在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要的特性,本节就带领大家详细了解什么是多态. 我们都知道,Python 是弱类型语言,其最明显的特 ...

  9. Python 中 with 用法详解

    浅谈 Python 的 with 语句:https://developer.ibm.com/zh/articles/os-cn-pythonwith/ python3,浅谈with的神奇魔法:http ...

  10. [Python] 关键字 yield 用法详解

    一个十分十分优秀的博客: python中yield的用法详解--最简单,最清晰的解释.

最新文章

  1. ganglia 监控mysql_Ganglia监控MySQL
  2. wordpress短代码转php,WordPress中的shortcode短代码功能使用详解
  3. 为Exchange Server 申请有效期超过2年的证书
  4. C++ 异常机制分析
  5. 深入研究Java类加载机制
  6. SQL SERVER while循环
  7. oracle之 RA-00054: resource busy and acquire with NOWAIT specified or timeout expired
  8. activeMq初识 - 2
  9. windows命令提示符_如何个性化Windows命令提示符
  10. 将TIMESTAMP类型的差值转化为秒的方法
  11. 详解淘宝直播背后的技术!
  12. java 错误页_《javaweb学习笔记2-jsp错误页设置》
  13. Java后台调用第三方支付接口(易宝支付)
  14. wacom数位板怎么调压感_数位板没有压感怎么办?如何设置?
  15. Tomcat服务器端口修改,tomcat服务器配置端口 tomcat端口号修改操作步骤
  16. 微软官网win10系统下载地址
  17. 电力猫服务器的网页,电力猫方案完美解决家庭网络布局
  18. Python星盘接口、排盘、占星、API功能描述
  19. Data Base学习记录:关系模型
  20. python web 开发从入门到精通 pdf_Python Web开发从入门到精通

热门文章

  1. 植物研究最新进展(2021年11月)
  2. 课室用的电子黑板|一体手写屏哪家做的好?
  3. 微软xgp有哪些地区服务器,选择微软XGP订阅服务后,除了《荒野大镖客2》还有这些游戏值得玩...
  4. c语言关于性别的程序,输入性别并记录男女个数还要算出男女平均年龄的c语言程序怎样写...
  5. [MATLAB]最邻近插值法进行图像放大
  6. python爬虫笔记---1.13---第一篇
  7. WebKit介绍及总结(一)
  8. GeForce Experience 绕过登录与禁止自动更新
  9. 直方图中bin的说明
  10. pytorch中dim的含义及相关做法