前言:在前面的博文里,我介绍了Python中的文件操作,详情见:深入浅出Python——Python高级语法之文件操作,本文将主要讲解with open() as读写文件的优点与作用。

文章目录

  • 一、读取文件抛出异常
  • 二、分析解决上述问题
  • 三、with open() as读写文件
  • 四、File对象属性总结

一、读取文件抛出异常

在之前的博文里,我们说到:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

f = open('test.txt', 'r')

标示符'r'表示读文件。这样,我们就成功地打开了一个文件。但是,如果这个文件不存在,那么此时open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉我们文件不存在,如下:

Traceback (most recent call last):File "G:\pyStudy\NotepadPyTest\Test", line 1, in <module>f = open('test.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

如果文件成功打开,那么此时就可以调用read()方法读取文件中的内容。

f.read()

特别需要注意的是: 在操作文件完成之后,需要调用close()方法关闭文件。因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

f.close()

二、分析解决上述问题

由于文件读写时有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally通过捕捉异常、处理异常来实现。

如果能保证文件打开没有异常的情况下,我们每次都这么写,实在太繁琐。所以,Python引入了with语句来自动帮我们调用close()方法。也就是说:文件读取的这个操作,只有在with语句内部才会生效,不会离开。

三、with open() as读写文件

语法:

with open(文件名, 模式) as 文件对象:文件对象.方法()

实例:

with open('test.txt', 'r') as f:print(f.read())

由此可见:代码更加简洁、优美,并且不必调用close()方法。

注意:with语句不仅可以用来读文件,还可以写文件,具体根据需求。

四、File对象属性总结

文件对象属性 描 述
file.closed 表示文件已经被关闭,否则为False
file.mode 打开文件时使用的访问模式
file.encoding 文件所使用的编码
file.name 文件名
file.newlines 未读取到行分隔符时为None

Python使用with open() as读写文件【必知必会】相关推荐

  1. Python天天美味(17) - open读写文件

    Python中文件操作可以通过open函数,这的确很像C语言中的fopen.通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作. 1.open ...

  2. Python 程序员必知必会的开发者工具

    Python 程序员必知必会的开发者工具 Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作.同样的理念也适用于工具开发者的工作, ...

  3. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)

    站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...

  4. 《MySQL必知必会》SQL文件

    <MySQL必知必会>SQL文件: 表的创建和外键绑定: # 在Mysql中取消外键约束 SET FOREIGN_KEY_CHECKS=0; DROP TABLE customers; D ...

  5. linux运行界别,day7 Linux下必知必会文件(2)

    主要内容: 运行级别 Linux下面必知必会文件和目录 Linux启动流程 一.运行级别 1.运行级别分为0--6共七级 具体如下表: 级别 CentOS 6 (run level) CentOS 7 ...

  6. 《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录

    ----------------------------------------------------------------------------分割线--------------------- ...

  7. asp sql ip地址排序_SQL必知必会读书笔记,30分钟入门SQL!

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 来源:https://segmentfault.com/p/1210000011760 ...

  8. 性能调优之JMH必知必会1:什么是JMH

    性能调优之JMH必知必会1:什么是JMH JMH必知必会系列文章(持续更新) 一.前言 二.什么是JMH 1.JMH简介 2.JMH入门 3.使用JMH进行微基准测试 JMH必知必会系列文章(持续更新 ...

  9. java面试必知必会

    java面试必知必会 面向对象 成员变量成员方法 Integer相关 double 和 Double相关 多态,向上转型 hashcode.==.equals比较 java中子类继承父类时是否继承构造 ...

  10. Android 性能优化必知必会(2020-5-16)

    做了这么久性能相关的工作,也接触了不少模块,说实话要做好性能这一块,真心不容易.为什么这么说? 是因为需要接触的知识实在是太多了, Android 是一个整体,牵一发而动全身,不是说只懂一个模块就可以 ...

最新文章

  1. Java™ 教程(Queue接口)
  2. 小区的足球场地实地拍摄
  3. 咖啡日报入驻PMCAFF App安卓端
  4. 绝不是剧透!全角度解析EMC Unity绝妙重头戏
  5. 前端传数据到后台部分接收成功,部分接收失败
  6. Windows下使用zerotier时提示PORT_ERROR错误
  7. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
  8. BootStrap笔记-Model(模式对话框)样式修改
  9. Asprise OCR v4.0 64位破解...仅供学习使用
  10. FasterRCNN理解
  11. 必须收藏的文档:TIBCO Spotfire入门大全
  12. 超全!基于Java的机器学习项目、环境、库...
  13. l36h android os,Sony Xperia Z(L36h)怎么刷魅族Flyme OS
  14. 读书笔记,《反脆弱》,第四章,杀死我的东西却让其他人更强壮
  15. html画布抗锯齿,javascript – Node-Canvas图像抗锯齿似乎不起作用
  16. html仿网易云网站,GitHub - Hdoove/music-webapp: 仿网易云webapp
  17. mini-css-extract-plugin源码解析
  18. STM32F030读取TMP275温度传感器,模拟iic。
  19. Vcc、Vee、Vdd、Vss傻傻分不清楚?
  20. 机器学习案例(十一):水质分析与预测

热门文章

  1. 帮我用python flask框架写一个可以上传英文pdf然后通过调取百度翻译api翻译为中文然后保存为pdf文件的代码...
  2. 简单的老板键功能的实现
  3. 社交时代,如何组建并运营一个高质量的社群?
  4. 高防IP如何防止爬虫和Web攻击?
  5. 双百双新产业项目是什么_广西28个“双百双新”产业项目集中开竣工
  6. 华为眼中管理者的18种惰怠行为
  7. execjs执行包含中文参数的JavaScript
  8. 二阶魔方(仿真问题)
  9. 智邦国际31.85版本ERP系统好不好用?有哪些作用?
  10. HFSS NFC 13.56MHz 天线仿真(3)-线圈各种参数对等效电感的影响