python - 我收到以下错误 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())
解决方案
该错误告诉您,您在with
语句中使用的对象类型不正确。__enter__
是作为上下文管理器协议的一部分调用的方法之一,而您使用的类型没有该方法。
根据您的变量名称,您可能正在使用文件名来使用文件对象。然后错误消息将有意义,因为字符串不是文件对象的上下文管理器。尝试将您的with
声明更改为:
with open(filename) as file_object:
推荐阅读
- python - 切片数据帧.loc问题
- c# - UserControl:在构造函数中使用自定义属性
- sql - 插入到选择和除外
- asp.net - 需要 MVC 实体框架的帮助
- webstorm - 如何过滤JetBrains“模块依赖图”中包含的模块?
- excel - Excel VBA 查找/替换 .txt 文件中的文本
- c++ - 为了在测试中调用析构函数(用于测试),静态转换基类到派生类有多可怕?
- bash - ssh 到远程服务器给出了不正确的主机名
- c# - 我应该把这个 if 语句放在哪里,以便在单击每个按钮时执行它?
- python - 如何使用reveal.js将jupyter notebook设置为幻灯片