Python遍历目录添加图片到PPT遇FileNotFoundError求解
解决思路
1. 核心问题:路径格式错误
你代码里写的/dataset/"+i+"/Image_1.png是绝对路径(开头的/指向系统根目录),但你的dataset文件夹实际在当前工作目录下,应该用相对路径才能正确定位。
快速修复:
去掉路径开头的/,改成相对路径写法:
base = f"dataset/{i}/Image_1.png"
2. 更可靠的路径拼接(推荐)
手动拼接路径容易出错,建议用os.path.join自动适配不同系统的路径分隔符(Windows用\,Linux/macOS用/),同时记得先导入os模块:
import os # ...其他代码... base = os.path.join("dataset", i, "Image_1.png")
3. 调试技巧:验证路径有效性
可以在添加图片前先检查路径是否存在,方便快速排查问题:
if os.path.exists(base): pic = slide.shapes.add_picture(base, left, top) else: print(f"文件不存在:{base}")
4. 额外优化:避免图片重叠
你当前所有图片都添加到同一张幻灯片上,会导致图片堆叠覆盖。如果需要每张图片单独占一张幻灯片,把创建幻灯片的代码放到循环内部:
for i in os.listdir("dataset"): if i == ".DS_Store": print("Not applicable") continue # 每次循环新建一张空白幻灯片 slide = prs.slides.add_slide(blank_slide_layout) base = os.path.join("dataset", i, "Image_1.png") print(base) left = top = Inches(1) if os.path.exists(base): pic = slide.shapes.add_picture(base, left, top) else: print(f"跳过不存在的文件:{base}")
完整修正后的代码示例
from pptx import Presentation from pptx.util import Inches import os prs = Presentation() blank_slide_layout = prs.slide_layouts[6] for i in os.listdir("dataset"): if i == ".DS_Store": print("Not applicable") continue slide = prs.slides.add_slide(blank_slide_layout) base = os.path.join("dataset", i, "Image_1.png") print(base) left = top = Inches(1) if os.path.exists(base): pic = slide.shapes.add_picture(base, left, top) else: print(f"文件未找到:{base}") prs.save('test.pptx')
内容的提问来源于stack exchange,提问作者TJB
相关产品推荐
相关产品推荐

