为何导入aiofiles后无法调用aiofiles.os.makedirs函数?
aiofiles.os访问报错的原因及解决办法
问题根源
aiofiles 23.1.0版本中,os是独立的子模块,仅执行import aiofiles时,Python不会自动加载该子模块,所以直接调用aiofiles.os.makedirs会触发AttributeError。
你看到的直接用aiofiles.os的示例,要么是基于旧版aiofiles(23.x之前的版本),要么示例代码里隐含了from aiofiles import os这类导入操作,只是没写出来。
可用的解决方式
除了你已经用的显式导入并重命名的写法:
import asyncio from aiofiles import os as aioos asyncio.run(aioos.makedirs('downloads', exist_ok=True))
还可以直接显式加载aiofiles.os子模块,之后就能用aiofiles.os的写法:
import asyncio import aiofiles import aiofiles.os # 显式导入子模块 asyncio.run(aiofiles.os.makedirs('downloads', exist_ok=True))
版本验证
要确认当前aiofiles版本,可执行以下代码:
import aiofiles print(aiofiles.__version__)
23.x及以上版本都需要显式导入子模块才能通过aiofiles.os访问方法。
内容的提问来源于stack exchange,提问作者Anton Balabanov
相关产品推荐
相关产品推荐

