与os.scandir()引发AttributeError:
当我使用python文档中的示例代码(这里)时引发了AttributeError
。 示例代码如下所示:
with os.scandir(path) as it:
for entry in it:
if not entry.name.startswith('.') and entry.is_file():
print(entry.name)
结果是一个AttributeError
:
D:Programming>test.py
Traceback (most recent call last):
File "D:Programmingtest.py", line 3, in <module>
with os.scandir() as it:
AttributeError: __exit__
尽管将os.scandir()
赋值给一个变量可以正常工作。 有人能告诉我我错过了什么吗?
Python 3.6中添加了上下文管理器支持,试图将其与以前版本一起使用会引发错误,因为它不是上下文管理器(并且Python试图首先加载__exit__
)。
这在scandir
文档( scandir
在你看到的代码片段下)中已经说明过了:
3.6版新增功能:增加了对上下文管理器协议和close()
方法的支持。 [...]
(强调我的)
你可以更新到Python 3.6,或者,如果你不能,不要用它作为上下文管理器。
文档说
3.6版新增功能:增加了对上下文管理器协议的支持
您可能正在运行较旧的Python版本。
链接地址: http://www.djcxy.com/p/19993.html上一篇: with os.scandir() raises AttributeError:
下一篇: How to get all of the immediate subdirectories in Python