当前位置: 首页 > news >正文

使用python iter方法读取文件

使用python iter方法读取文件

  • 什么是 iter()?
  • 使用 iter() 逐行读取文件
  • 使用 iter() 和自定义结束标记
  • iter() 与其他读取文件方法的对比

什么是 iter()?

iter() 是 Python 内置的一个函数,用来返回一个迭代器。迭代器是一种对象,允许你逐个访问其元素,而无需一次性将所有元素加载到内存中。当我们把 iter() 应用于文件对象时,它可以让我们逐行读取文件内容
iter() 的基本语法:

iter(object[, sentinel])
  • object:需要转换为迭代器的对象,可以是可迭代对象(如列表、字符串)或自定义对象。
  • sentinel(可选):用于配合函数生成迭代器,直到函数返回 sentinel 值时停止迭代。

使用 iter() 逐行读取文件

# 逐行读取文件内容
with open('example.txt', 'r') as file:for line in iter(file):print(line.strip())  # 输出每行内容

使用 iter() 和自定义结束标记

iter() 还可以结合自定义的结束标记(sentinel)使用。在处理一些自定义读取逻辑时,iter() 可以根据我们提供的条件结束迭代。这种方式通常用于从文件中读取固定的块或分段数据,直到遇到特定标记为止。
示例:使用 iter() 和自定义标记

def read_chunk(file_obj, chunk_size):return file_obj.read(chunk_size)with open('example.txt', 'r') as file:for chunk in iter(lambda: read_chunk(file, 10), ''):  # 每次读取 10 字符print(chunk)

iter() 与其他读取文件方法的对比

iter() 并不是唯一一种读取文件的方式,我们来对比它与其他常用文件读取方法的优劣。

  1. read() 方法
    file.read() 一次性读取整个文件,适用于小文件。
with open('example.txt', 'r') as file:content = file.read()print(content)
  • 优点:代码简单,可以一次性获取文件所有内容。
  • 缺点:如果文件过大,可能导致内存溢出,尤其是几 GB 或更大的文件。
  1. readline() 方法
    file.readline() 每次读取文件的一行,直到遇到文件末尾。
with open('example.txt', 'r') as file:while True:line = file.readline()if not line:breakprint(line.strip())
  • 优点:逐行读取,适合大文件,节省内存。
  • 缺点:相比 iter(),代码略显冗长,且必须手动处理文件结束条件。
  1. readlines() 方法
    file.readlines() 一次性读取所有行,并返回一个包含每行内容的列表。
with open('example.txt', 'r') as file:lines = file.readlines()for line in lines:print(line.strip())
  • 优点:可以直接获取文件所有行的列表,适合小文件。
  • 缺点:与 read() 类似,对于大文件,它会将所有内容加载到内存中,内存占用较大。
  1. iter() 方法
with open('example.txt', 'r') as file:for line in iter(file):print(line.strip())
  • 优点:简单高效,逐行读取,内存占用少。可以与 for 循环结合,代码更简洁,不需要显式处理文件结束条件。
  • 缺点:相比于 read(),在某些场景下可能需要额外处理数据,比如处理多行同时读取的情况。

http://www.mrgr.cn/news/41758.html

相关文章:

  • arduino点亮墨水屏
  • 第十四讲-输入控件QPlainTextEdit
  • “衣依”服装销售平台:Spring Boot技术实践与创新
  • 深度学习应用
  • YOLO11改进|上采样篇|引入DySample轻量级动态上采样器
  • 昇思MindSpore进阶教程--在ResNet-50网络上应用二阶优化实践(上)
  • 计算机网络期末复习真题(附真题答案)
  • 奶茶在线小程序介绍
  • Linux运维必知应知命令集合
  • 物联网智能项目探究和方案设计
  • ChatGPT效率指南!轻松掌握提高生产力的秘诀!
  • 06 Docker容器内部管理的终极指南:掌握核心技巧与最佳实践
  • 图形化部署Java Web项目的3款工具大全
  • SQL Server—T-sql使用Select查询详解
  • 基于SSM的校园快递一站式服务系统【附源码】
  • 在一个克隆的仓库中设置远程仓库并同步最新的更改
  • 【Linux私房菜(九)之进程间通信】
  • 性能测试为什么需要收集度量指标
  • oracle virtualBox 拖动文件到虚拟机内报错
  • 24-10-2-读书笔记(二十二)-《契诃夫文集》(一)上([俄] 契诃夫 [译] 汝龙)啊!真想生活。