演示环境,操作系统:Win10 21H2(64bit);Python解释器:3.8.10。

open是Python的一个内置函数,一般用于本地文件的读写操作。with open不是一个整体,是使用了with语句的open函数。with open可以说是open的优化用法或高级用法,相比open更加简洁、安全。open函数必须搭配.close()方法使用,先用open打开文件,然后进行读写操作,最后用.close()释放文件。with open则无需.close()语句,所以说简洁。如以下例子。虽然只少了一行代码,但也确实是少了。

file = open("./data.txt", "r", encoding="utf-8")  # 读取目标.txt文件,创建对象
a = file.read()  # 获取文件内容
file.close()  # 释放文件资源print("文件内容为:", a)
with open("./data.txt", "r", encoding="utf-8") as file:  # 读取目标.txt文件,创建对象a = file.read()  # 获取文件内容print("文件内容为:", a)

文件读写过程中可能会出现IO异常,造成整个程序崩溃,后面.close语句无法执行,系统也就无法释放文件。with open即便在文件读写过程中发生IO异常,也会自动调用.close()方法,关闭文件。所以一般使用try finally或with语句搭配open函数使用,以保证即便发生IO异常,也能正常关闭文件。以下是try finally语句和with语句搭配open函数使用的实例,可以看出前者使用起来比较麻烦,而后者相对简单。所以一般在使用open函数对文件进行读写操作时,推荐搭配with语句使用。

file = open("./data.txt", "r", encoding="utf-8")
try:a = file.read()
finally:file.close()
print(a)
with open("./data.txt", "r", encoding="utf-8") as file:a = file.read()
print(a)

这里需要注意,open函数搭配try finally语句使用和搭配with语句使用,都能保证即便文件读写异常也能正常关闭文件,从这个角度看两者的效果是等价的。但前者还比后者多了一个好处,就是可以捕获异常,避免程序崩溃。也就是通常说的使整体程序更健壮。如果要打开的文件不存在或文件读写中出现错误,with open都会崩溃,try finally则不会。

好了,以上就是本文的所有内容了,谢谢大家观看。

谢谢支持,谢谢。

Python open和with open的区别相关推荐

  1. python中break和continue的区别

    python中break和continue的区别 break 结束for 或者while 循环  后面还没循环到的 不再循环 continue 当满足某种条件时结束当前值的循环 后面没有循环的继续循环 ...

  2. Python 应用领域以及版本之间的区别

    Python 应用领域以及版本之间的区别 一.Python应用领域 Python+人工智能,给你更多研究方向选择! 企业级综合实战项目,集六大前沿技术为一体 二. Python 2与Python 3的 ...

  3. python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. Python面试之 is 和 == 的区别

    Python面试之 is 和 == 的区别 强哥 ​ 亿贝软件工程(上海)有限公司 全栈工程师 ​关注他 契卡 . 在读笛卡尔的孟德 等 1,210 人赞同了该文章 面试实习生的时候,当问到 is 和 ...

  6. python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  7. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  8. python ord()与chr()用法以及区别

    python ord()与chr()用法以及区别 原文:http://blog.csdn.net/yulock/article/details/52904035 ord()函数主要用来返回对应字符的a ...

  9. c与python的区别-Python与C语言有什么区别?

    答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...

  10. python和c语言有什么关系-Python与C语言有什么区别?

    答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...

最新文章

  1. Ampere 携手 Rigetti 开发混合量子经典计算机
  2. 阿里云服务器(Ubuntu16.04 64位)远程连接
  3. 设计模式之四(抽象工厂模式第三回合)
  4. python在材料模拟中的应用_材料模拟python_模拟-python模拟-在不妨碍实现的情况下修补方法...
  5. html表格背景图片格式,HTML表格标记教程(8):背景图像属性BACKGROUND
  6. Docker exec 命令执行出错, 显示 the input device is not aTTY 的解决办法
  7. Python数据分析学习笔记:使用SciKit-Learn进行数据规范化
  8. (93)FPGA模块例化传递参数(defparam)
  9. 为什么说算法是程序猿“修仙”的必经之地?
  10. 由BNF解释如何用递归表示循环
  11. 计算机中官方文档阅读方法,中国知网-帮助中心
  12. vue alexa:_免费下载:在任何PC上使用Alexa免提
  13. android手机常用浏览器,安卓手机浏览器对比 六款手机浏览器横评
  14. 【用Python对全职高手小说分析分词词频词性,小说人物出场次数排序,小说中食物排序,小说人物关系等等】
  15. 企业微信应用消息html标签,消息类型及数据格式
  16. python re 正则提取中文
  17. 002-windowa基础(DOS命令:net user 用户 密码 /add)
  18. 浏览器F12功能总结
  19. matlab机器人工具箱 欧拉角,Matlab机器人工具箱(一)
  20. 计算机软件设计基础课后答案,2012年计算机二级VFP程序设计基础习题及答案

热门文章

  1. 联想 Newifi mini Y1 Padavan固件设置5Ghz桥接
  2. MySQL 案例实战--MySQL数据库主从复制
  3. linux -----各种颜色代表什么
  4. python开发cms企业官网用python php_基于Django的Python CMS
  5. 惠普打印机故障代码_HP打印机通用报错代码含义及惠普打印机错误提示排除方法...
  6. 【MATLAB】进阶绘图 ( Stairs 阶梯图 | stairs 函数 | Stem 离散序列数据图 | stem 函数 | 正弦函数采样 )
  7. 大学英语精读第三版(第四册)复习笔记——文章内容摘要
  8. 深度学习AI美颜系列---美图秀秀AI美图之跨次元相机特效
  9. java 百度ocr文字识别_JAVA实现百度OCR文字识别功能
  10. 摄影测量简答题和作图题