Python读取桌面文件夹图片时触发FileNotFoundError的问题排查求助
Python读取桌面文件夹图片时触发FileNotFoundError的问题排查求助
兄弟,我一眼就瞅出你代码里的关键问题啦!你看报错里的路径是C:/Users/Administrator/Desktop/testclassB,明显是父文件夹路径和子文件夹名粘在一起了——因为你直接用folder + random.choice(os.listdir(folder))拼接路径,而你的folder末尾没有加路径分隔符(斜杠/),所以系统把test和classB直接拼成了一个不存在的名字,自然找不到啦!
给你几个解决步骤,亲测好用:
1. 用os.path.join()正确拼接路径
这是Python处理路径的标准姿势,它会自动根据你的操作系统添加正确的路径分隔符,完全避免手动拼接的错误。比如把你的路径拼接代码改成这样:
file_path = os.path.join(folder, random.choice(os.listdir(folder)))
2. 注意:os.listdir()返回的可能是子文件夹,不是直接的图片
你说test文件夹里有classA和classB,那os.listdir(folder)返回的是这两个文件夹名,不是里面的图片文件。所以你还得再进子文件夹里找图片才行,不然打开的是文件夹,肯定也会报错。我给你改好完整的代码:
import os import random from PIL import Image def read_random_image(): folder = r"C:/Users/Administrator/Desktop/test" # 先获取test文件夹下的所有子项(classA、classB) sub_folders = os.listdir(folder) # 随机选一个子文件夹 target_folder = random.choice(sub_folders) # 拼接子文件夹的完整路径 target_folder_path = os.path.join(folder, target_folder) # 筛选子文件夹里的图片文件(支持png/jpg/jpeg) image_files = [f for f in os.listdir(target_folder_path) if f.lower().endswith(('.png', '.jpg', '.jpeg'))] if not image_files: raise ValueError(f"文件夹{target_folder}里没有找到图片文件") # 随机选一张图片,拼接完整路径 random_image = random.choice(image_files) image_path = os.path.join(target_folder_path, random_image) # 打开图片 pil_im = Image.open(image_path, "r") return pil_im
3. 额外排查小技巧
- 调试的时候可以先打印生成的路径,比如在
Image.open前加print(image_path),看看路径是不是你预期的样子 - 确认test文件夹、classA/classB文件夹确实存在,而且里面有图片
- 检查文件夹权限,确保你的Python程序有权限访问桌面的文件(一般桌面权限没问题,但有时候系统会有保护)
备注:内容来源于stack exchange,提问作者janko
相关产品推荐
相关产品推荐

