Python中使用readline()读取文件时如何检测EOF?
Python 3.6+ 检测readline()是否到达EOF的解决方案
核心判定逻辑
Python中使用readline()逐行读取文本文件时,到达EOF(文件末尾)会返回空字符串'',不会抛出任何常规业务场景的异常,直接通过返回值即可完成判定。
注意需要区分空行与EOF:文件中的空行读取结果为带换行符的'\n',布尔值判定为True,只有EOF返回的完全空字符串布尔值判定为False,不会出现误判。
如果是二进制模式打开文件('rb'模式),逻辑完全一致,仅EOF返回值为二进制空串b'',通用判定逻辑无需调整。
适配后的代码示例
with open(file_name, 'r') as i_file: while True: line = i_file.readline() # EOF判定逻辑,兼容文本、二进制模式 if not line: # 到达文件末尾,跳出循环终止读取 break # 此处编写你的业务逻辑处理读取到的行
异常说明
正常读取流程下到达EOF不会抛出异常,仅当出现文件被意外关闭、读取权限被修改、磁盘IO故障等非常规错误时,才会抛出IO类异常,该类异常属于通用文件操作异常,和EOF判定无关。
版本兼容性
上述逻辑完全兼容Python 3.0及以上所有版本,天然支持3.6及以上运行环境,无额外依赖。
内容的提问来源于stack exchange,提问作者Serge Rogatch
相关产品推荐
相关产品推荐

