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

Python控制台录制器保存图片至FRAMES目录失败求助

解决控制台录制器保存图片到FRAMES目录失败的问题

问题原因

报错FileNotFoundError: [Errno 2] No such file or directory: 'FRAMES/60.png'的核心原因是FRAMES目录尚未创建,Python尝试向不存在的目录写入文件时会触发该错误。

解决方案

在执行保存图片的操作前,先检查并创建FRAMES目录。使用os.makedirs()方法并设置exist_ok=True参数,确保目录不存在时自动创建,已存在时不会抛出异常。

修改后的完整代码

import os
from PIL import Image, ImageDraw

# 提前创建FRAMES目录,不存在则创建,已存在则跳过
os.makedirs("FRAMES", exist_ok=True)

c = 1
def save():
    global c
    m = Image.new("RGB",(400,200),"#004c66")
    draw = ImageDraw.Draw(m)
    draw.text((5,5),text=output,fill=(255,255,255))
    with open(f"FRAMES/{c}.png","a+b") as fp:
        m.save(fp,"PNG")
    c+=1

output = 'Welcome to movieconsole!\nVersion: 0.1\n'
save()

with open('commands.txt') as fp:
  for i in fp.read().splitlines():
    if len(os.getcwd()) < 30:
        output += os.getcwd() + '$ '
    else:
        output += os.getcwd()[0:30] + '...$ '
    save()
    for l in i:
        output += l
        save()
    output += '\n'
    a = os.popen(i)
    for p in a.read().splitlines():
        output+=p+"\n"
        save()
        if len(output.splitlines()) > 12:
            output = '\n'.join(output.splitlines()[1::])
    if i[0:2] == 'cd':
        os.chdir(' '.join(i.split()[1::]))
    if len(output.splitlines()) > 12:
        output = '\n'.join(output.splitlines()[1::])

print(output)

补充说明

  • os.makedirs("FRAMES", exist_ok=True)会在程序启动时完成目录创建,后续保存图片时就能找到正确路径。
  • 如果修改后仍报错,需检查当前工作目录是否正确,或是否具备创建目录的系统权限。

内容的提问来源于stack exchange,提问作者user22155941

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:55:17