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
相关产品推荐
相关产品推荐

