Python文件读取方法详解:read、readlines与readline的区别及内存优化

Ryan
Ryan
发布时间:2026-10-13| 6人浏览过
原创

本文深入解析Python中文件读取的三种核心方法:read()、readlines()和readline()。重点对比它们在返回类型、内存占用及适用场景上的差异,特别是针对大文件读取时的内存优化策略。同时,结合fp.readlines()、str.strip()和str.split()等常用字符串处理函数,讲解从文件读取字符串到数值转换的完整流程,并解决常见的io.UnsupportedOperation错误。

with open(filename) as fp: 
  dataMat = []
  for line in fp.readlines():
          # fp.readlines()返回一个list,list of strs
          # 也即line类型为`str`
    curLine = line.strip().split('\t')
          # 只有`str`类型才有strip()成员函数,
          # 在经过split()分割,得到list类型
          # 也即curLine类型为list
          # curLine 仍然是由字符串构成的list
    dataMat.extend([float(entry) for entry in curLine])
          # 对每一个类型进行强转

文件流成员函数

(1)fp.readlines():该方法返回一个由字符串组成的列表(list of strs),其中文件中的每一行被视为一个独立的字符串,行与行之间的分隔符为换行符\n。

(2)str.strip():这是字符串对象的一个成员函数,其作用是去除字符串首尾的指定字符(默认为空白字符),返回的结果依然是一个字符串。

(3)str.split():同样是字符串的成员函数,用于根据指定的分隔符对字符串进行分割,返回值是一个由字符串构成的列表(list of strs)。

(4)从文件中读取的数据(无论是整行还是切分后的部分)均为字符串类型。若需进行数值计算,必须通过强制类型转换将其转换为数值类型。

read()、readlines()、readline()

(1)read():一次性读取文件的全部内容,数据会加载到内存中,返回类型为字符串(str)。

(2)readlines():一次性读取文件的所有行,数据同样置于内存中,返回类型为字符串列表(list of strs),这种方式较适合按行进行迭代处理。

for line in fp.readlines():
  ...
                # line 中的内容其实就是 readline 的内容

(3)readline():逐行读取文件内容,每次调用返回一行字符串,返回类型为str。

while True:
  line = fp.readline()
  if not line:
    break
  ...

当需要读取的文件体积过大时,出于内存占用的考虑,应优先使用readline()方法进行逐行读取,以避免一次性加载全部数据导致内存溢出。

io.UnsupportedOperation: read

即表示不支持读操作。在使用with open() as fp语句时,如果文件流fp无法读取,通常是因为获取文件的mode(模式)不正确。例如,若将模式设置为'w'(只写文本模式)或'wb'(只写二进制模式),则文件对象仅支持写入,不支持读取。

总结

以上就是本文的全部内容,希望这些关于Python文件读取的讲解能对您的学习或工作有所帮助。感谢大家对本站的支持。如需了解更多相关技术细节,请查阅下方的相关链接。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。