You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIL 9.1.1调用image.save()保存图片时触发FileNotFoundError报错

问题修复方案

这个报错是PIL调用系统写入接口创建目标文件时触发的,和PIL图像保存逻辑本身无关,按以下优先级排查即可:

  • 最常见原因:相对路径解析基准和你预期不一致
    代码里写的相对路径output.png,是按Python进程启动时的工作目录解析,不是按脚本文件存放的目录解析。很多IDE默认的运行工作目录和脚本所在目录不一致,若工作目录不存在或当前账号无写入权限,就会触发该报错。
    先执行以下代码打印当前实际工作目录验证:
    import os
    print(os.getcwd())
    
    如果输出路径不是你脚本存放的C:\Users\Francesco\Documents\coding\python,要么修改IDE的运行配置把工作目录切到脚本所在文件夹,要么直接基于脚本路径拼接绝对路径保存,完全绕开工作目录的影响:
    from PIL import Image
    import os
    
    # 获取当前脚本所在的绝对目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    save_path = os.path.join(script_dir, 'output.png')
    
    im = Image.new('RGB', (1, 1), (0, 0, 0))
    im.save(save_path, 'PNG')
    
  • 手动写绝对路径时报错的核心原因:Python写入文件时不会自动创建不存在的父目录。比如你指定保存路径为C:\dev\imgs\output.png,必须提前手动建好C:\dev\imgs这层文件夹,否则同样会触发FileNotFoundError。
  • 系统权限拦截:Windows系统如果开启了Defender的「受控文件夹访问」(勒索软件防护功能),会默认拦截未授权程序往文档、桌面、图片等用户受保护目录写入文件,可以把Python解释器加入功能允许列表,或者把文件存到非系统受保护的自建目录测试。注意不要尝试往C盘根目录、Program Files目录这类需要管理员权限的路径存文件,普通用户账号默认无写入权限。
  • 隐式命名冲突:你当前的脚本文件名为image.py,和PIL依赖的内部模块同名,可能触发隐式导入异常。建议把脚本重命名为mandelbrot_render.py这类不和第三方库模块重名的名称,同时删除脚本目录下的__pycache__缓存文件夹后再运行。

内容的提问来源于stack exchange,提问作者Francesco 'oH pongwIj'e'

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:27:18