读取文件的三个方法:read()、readline()、readlines()。均可接受一个方法参数用以限制每次读取的数据量,但通常不使用。

read()

优点:读取整个文件,将文件内容放到一个字符串变量中。

劣势:如果文件非常大,尤其是大于内存时,无法使用read()方法。

总结:不适用于读取大文件

readline()

优点:readline()方法每次读取一行;返回的是一个字符串对象,保存当前行的内存,不占用内存

缺点:比readlines慢得多

包含知识点

  • 当你每次调用readline()方法时,你的文件指针就会指向当前行尾部,一个换行符 \n 占两位,一个中文也是
  • 读取到最后一行之后再调用readline()就会返回空,结束循环

readlines()

特点:一次性读取整个文件;自动将文件内容分析成一个行的列表

包含知识点

  • readlines()读取所有行然后把它们作为一个字符串列表返回
  • 返回的每一行内容包含换行符

文件关闭:

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

try:f = open('/path/to/file', 'r')print(f.read())
finally:if f:f.close()

每次这样写太繁琐了,所以Python引入了 with open() 来自动调用close()方法,无论是否出错

open() 与 with open()   区别

1、open需要主动调用close(),with不需要

2、open读取文件时发生异常,没有任何处理,with有很好的处理上下文产生的异常

with open()同时操作多个文件

with open("test/test.py", 'r') as f1, open("test/test2.py", 'r') as f2:print(f1.read())print(f2.read())

写文件

写文件和读文件是一样的,唯一区别是调用 open() 函数时,需要将 mode 参数改成可写的模式,如上面的表格所示

f = open("test/test.py", "a+")
f.write("test")
f.writelines("polo")
print(f.read())
f.close()

写文件的原理

当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。

只有调用 close() 方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。

所以,还是用with语句好鸭!

关于字符编码

要写入特定编码的文本文件,请给 open() 函数传入 encoding 参数,将字符串自动转换成指定编码,默认 encoding=None

例如,读取utf-8编码的文件:

f = open('test/utf8.txt', 'r', encoding='utf-8')
print(f.read())

遇到有些编码不规范的文件,你可能会遇到 UnicodeDecodeError ,因为在文本文件中可能夹杂了一些非法编码的字符。

遇到这种情况, open() 函数还接收一个 errors 参数,默认是 errors=None 表示如果遇到编码错误后如何处理。最简单的方式是直接忽略。

f = open('test/utf8.txt', 'r', encoding='utf-8', errors='ignore')

os.open()

格式

os.open(file, flags[, mode])

参数

  • file:要打开的文件
  • flags:该参数可以是以下选项,多个使用  "|"  隔开,只列常用的:
    • os.O_RDONLY: 以只读的方式打开
    • os.O_WRONLY: 以只写的方式打开
    • os.O_RDWR : 以读写的方式打开
    • os.O_APPEND: 以追加的方式打开
    • os.O_CREAT: 创建并打开一个新文件  
  • 划重点!!!不建议使用os.open,还是用with open()

Python文件读取关闭和写入相关推荐

  1. python读取文件读不出来-python文件读取失败怎么处理

    在读取文件时候比如读取 xxx.csv 时候 可能报编码错误 类似于 'xxx' codec can't decode byte 0xac in position 211: illegal multi ...

  2. 自动化神器啊,Python 批量读取身份证信息写入 Excel

    大家好,今天分享一个实用技能,利用 Python 批量读取身份证信息写入 Excel. 喜欢记得收藏.关注.点赞. 注:文末提供完整版代码.技术交流方式 读取 以图片形式的身份证为例,信息读取我们使用 ...

  3. python文件读取操作练习题(统计单词)

    python文件读取操作练习题(统计单词) 学习路线:python的文件读取基础入门(read(),readlines(),with.open()) ->python文件读取操作练习题(统计单词 ...

  4. python 文件读取错误之FileNotFoundError: [Errno 2] No such file or directory:,顺便学习斜杠/和反斜杠\的用法

    python 文件读取错误之FileNotFoundError: [Errno 2] No such file or directory:,顺便学习斜杠/和反斜杠\的用法: 最近学习文件读取和中文分词 ...

  5. Python 文件读取与写入操作方法

    读取文件: F.read([size]) #size为读取的长度,以byte为单位 F.readline([size])  #读一行,如果定义了size,有可能返回的只是一行的一部分  F.readl ...

  6. python文件读取写入元组_python文件和元组

    python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...

  7. python文件读取写入元组_python文件的读写

    1.使用open内置函数打开一个文件 file:相对路径或者绝对路径 mode:文件的模式. r 只读   w只写  b:二进制  t:以文本形式打开等等 encoding:编码方式,windows下 ...

  8. python文件读取写入实践_python文件写入实例分析

    本文实例讲述了python文件写入的用法.分享给大家供大家参考.具体分析如下: Python中wirte()方法把字符串写入文件,writelines()方法可以把列表中存储的内容写入文件. f=fi ...

  9. 一文贯通python文件读取

    不论是数据分析还是机器学习,乃至于高大上的AI,数据源的获取是所有过程的入口. 数据源的存在形式多为数据库或者文件,如果把数据看做一种特殊格式的文件的话,即所有数据源都是文件.获得数据,就是读取文件的 ...

最新文章

  1. C语言结束输入(两种方法)
  2. 8核32g mysql性能_MySQL性能优化之参数配置
  3. undefined reference to “boost” in Qt—Ubuntu
  4. Dom4j操作XML
  5. 休眠事实:集成测试策略
  6. Hbase伪分布式安装
  7. [翻译]Java 核心技术(第7版)(3)
  8. JAVA-1007. 素数对猜想 (20)
  9. 线性同余法随机数生成
  10. python三维点云投影(二)
  11. SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据
  12. pt和px的区别和相互转换关系
  13. android手机账号什么意思,苹果手机怎么改id账号 id账号是什么
  14. XCTF-Cat+Bug
  15. 微信小游戏Laya引擎声音Bug的解决方案
  16. 初学狄克斯特拉算法~(待提高)
  17. 循环-05. 兔子繁衍问题(15)
  18. INTERVAL函数的使用
  19. jieba.cut 和jieba.posseg
  20. 数据结构与算法[LeetCode]——sqrt(x)

热门文章

  1. druid以及监控台使用及配置
  2. 陆金所计算年化收益率
  3. 三分钟了解多模光纤和单模光纤的区别-ielab
  4. 比Navicat好用百倍的通用数据库管理工具,功能强大,最主要还免费!
  5. Html5实现iPhone开机界面
  6. 4000字干货长文!从校招和社招的角度说说如何准备大厂Java后端面试?
  7. 实验室cobot开发小tips
  8. CoBOT检测出AI开源框架TensorFlow中的缺陷
  9. 给定一字符串,按顺时针顺序输出为一个正方形
  10. 微信服务器在哪里修改密码,微信怎么修改密码?微信在哪里修改密码?