首页 > 解决方案 > 我收到以下错误 AttributeError: __enter__ when only using one with block

问题描述

当我尝试使用以下代码将文件行保存在列表中时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\emiel\AppData\Roaming\Sublime Text 3\Packages\User\Making_a_list_from_file.py", line 7, in <module>
    with filename as file_object:
AttributeError: __enter__

这是代码:


with filename as file_object:
    lines=file_object.readlines()

for line in lines:
    print(line.strip())

标签: pythonpython-3.x

解决方案


该错误告诉您,您在with语句中使用的对象类型不正确。__enter__是作为上下文管理器协议的一部分调用的方法之一,而您使用的类型没有该方法。

根据您的变量名称,您可能正在使用文件名来使用文件对象。然后错误消息将有意义,因为字符串不是文件对象的上下文管理器。尝试将您的with声明更改为:

with open(filename) as file_object:

推荐阅读