Python3报错AttributeError: 'function' object has no attribute 'glob'求助
解决AttributeError: 'function' object has no attribute 'glob'问题
错误核心原因
这个错误的本质是你把glob当成了函数而非模块来调用,常见触发场景有两种:
- 导入方式错误:比如用了
from glob import glob,此时glob是模块内的glob()函数,而非glob模块本身,自然没有.glob属性; - 变量名冲突:代码中定义了同名的
glob函数/变量,覆盖了glob模块的引用。
另外从错误信息里的代码行还能看到一个小问题:os.path.abspath()缺少必填参数,应该传入遍历到的文件路径_。
修复步骤
1. 调整导入语句
如果你的导入是:
from glob import glob
那么调用时直接用glob()即可,无需加.glob,修改对应代码行:
meme_file_paths = [os.path.abspath(_) for _ in glob("memes/*.png")]
如果要保留glob.glob()的写法,确保导入语句是:
import glob
2. 排查变量名冲突
检查代码中是否存在自定义的glob函数或变量,比如:
def glob(): # 自定义逻辑 pass
这类代码会覆盖glob模块的引用,需要给自定义的函数/变量改名。
3. 修正os.path.abspath的参数
确保列表推导式里的os.path.abspath传入正确参数,也就是遍历到的文件路径_,代码行应为:
meme_file_paths = [os.path.abspath(_) for _ in glob.glob("memes/*.png")]
修复后的完整代码片段
elif '!meme' in message.content: random_message_i = ["Hier das passt zu dir:", "Hier bitte du Knecht:", "Hier... keko:", "Ein Meme für das Meme:", "Gönn dir:", "Einfach wild xD:"] await message.channel.send(f"{random.choice(random_message_i)}") meme_file_paths = [os.path.abspath(_) for _ in glob.glob("memes/*.png")] random_meme_i = random.choice(meme_file_paths) await message.channel.send(file=discord.File(random_meme_i)) print("Last command: !meme")
内容的提问来源于stack exchange,提问作者cxyro
相关产品推荐
相关产品推荐

