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

如何修复使用csv.reader(open(..))时出现的AttributeError: __enter__错误?

解决AttributeError: __enter__错误的方案

嘿,我一眼就看出问题所在啦!你遇到的AttributeError: __enter__是因为把csv.reader直接放在了with语句里——而csv.reader返回的是迭代器,不是支持上下文管理的对象,with语句只认实现了__enter__和__exit__方法的对象(比如文件对象)。

错误代码的问题点

你原来的代码片段里出错的行是这样的:

with csv.reader(open('analyse_' + str(bloombergcode) + '.csv', 'r'), delimiter= ",",quotechar='|') as q2:

这里csv.reader()不是上下文管理器,所以with不知道怎么处理它,直接抛出了这个错误。

修复后的代码

正确的做法是先打开文件(文件对象是合法的上下文管理器),再基于这个文件对象创建csv.reader:

# 先把文件对象放在with里,确保代码块结束后自动关闭文件
with open('analyse_' + str(bloombergcode) + '.csv', 'r') as csv_file:
    # 基于打开的文件创建csv.reader实例
    q2 = csv.reader(csv_file, delimiter=",", quotechar='|')
    # 接下来就可以正常处理CSV内容了,比如遍历行
    for row in q2:
        # 这里写你的业务逻辑,比如情感分析相关操作
        print(row)

为什么这样改?

  • open()返回的文件对象自带上下文管理能力,with语句会在代码块执行完毕后自动帮你关闭文件,避免资源泄漏。
  • csv.reader只需要接收一个打开的文件对象作为参数,它会负责解析文件里的CSV格式内容。

如果之后还遇到问题,可以先检查文件路径是否正确、目标CSV文件是否存在哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:22