You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python不使用.readline/.readlines读取文件及代码运行问题咨询

Python文件读取及代码问题排查

1. 第二段代码未调用readline、readlines方法可正常读取文件的原理

Python中通过open()方法返回的文件对象是可迭代对象,直接对文件对象执行for line in file遍历操作时,解释器会默认逐行读取文件内容,每次迭代返回当前行的字符串,无需手动调用readline()/readlines()等读取方法。
同时第二段代码使用了with上下文管理器管理文件句柄,代码块执行结束后会自动关闭文件,无需手动调用file.close()方法,也避免了异常场景下资源泄漏的问题。

2. 第一段代码无法正常运行的问题排查

第一段代码存在两处核心错误:

  • 变量调用错误:你通过for lines in file.readlines()已经逐行拿到了每行内容存在lines变量中,但后续调用了file.split()——file是文件对象本身,没有字符串的split()方法,应该改为对每一行的内容做分割:line = lines.split()
  • 存在资源泄漏风险:你注释掉了file.close()方法,文件操作完成后没有主动释放句柄,会长期占用系统资源。

修正后的第一段代码示例:

# 修正后可正常运行的第一段代码
file = open('/Users/max/Desktop/education/Test_record.csv', 'r')
num_words = 0
for lines in file.readlines():
    line = lines.split()
    num_words += len(line)
print(num_words)
file.close()

额外优化建议:不建议使用readlines()读取文件,该方法会一次性把所有文件内容加载到内存中,处理大文件时会严重占用内存资源,直接迭代文件对象(和第二段代码一样)的内存占用更低,效率更高。

内容的提问来源于stack exchange,提问作者Maksim Maksimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:24:04