2015款校用Chromebook(Chrome OS)加载本地数据集路径报错求助
问题解决:Chrome OS加载本地图像数据集及路径错误修复
核心错误原因
- 路径错误:Chrome OS中"My Files"的系统实际路径不是你写的
Files/My Files,而是/mnt/chromeos/MyFiles - 压缩包访问方式错误:
os.listdir无法直接读取zip压缩包内的目录,必须先解压或用专门的模块读取
Chrome OS文件访问规则
- 本地"My Files"目录的系统绝对路径为
/mnt/chromeos/MyFiles,代码中必须使用这个路径才能访问到你的文件 - 如果启用了Linux开发环境(Crostini),该路径同样有效,无需额外配置
- 压缩文件不能直接当作目录访问,需解压或用
zipfile模块读取内部内容
解决方案一:解压后访问(简单直观)
- 在Chrome OS的文件管理器中双击
flower.zip完成解压,解压后会生成同名文件夹(如flower) - 使用以下修正后的代码:
import matplotlib.pyplot as plt import os import random # 替换为解压后rose目录的绝对路径 rose_dir = "/mnt/chromeos/MyFiles/ProgrammingFiles/Programming/flower/train/rose" # 过滤出目录下的图片文件 image_files = [f for f in os.listdir(rose_dir) if f.lower().endswith(('.png', '.jpg', '.jpeg'))] figure, ax = plt.subplots(nrows=1, ncols=3, figsize=(10, 5)) for i, a in enumerate(ax.flat): selected_file = random.choice(image_files) # 用os.path.join拼接路径,避免手动拼接出错 file_path = os.path.join(rose_dir, selected_file) img = plt.imread(file_path) a.imshow(img) a.axis('off') # 隐藏坐标轴让图片显示更整洁 plt.tight_layout() plt.show()
解决方案二:不解压直接读取zip内文件
如果不想占用额外存储空间,可使用zipfile模块直接读取压缩包内的图片:
import matplotlib.pyplot as plt import zipfile import random import io # zip文件的绝对路径 zip_path = "/mnt/chromeos/MyFiles/ProgrammingFiles/Programming/flower.zip" # 压缩包内rose目录的相对路径 rose_zip_subdir = "train/rose/" with zipfile.ZipFile(zip_path, 'r') as zf: # 筛选出rose目录下的所有图片文件 image_files = [f for f in zf.namelist() if f.startswith(rose_zip_subdir) and f.lower().endswith(('.png', '.jpg', '.jpeg'))] # 随机选择3张图片 selected_files = random.sample(image_files, 3) figure, ax = plt.subplots(nrows=1, ncols=3, figsize=(10, 5)) for i, a in enumerate(ax.flat): # 从zip包中读取文件内容并转为可读取的字节流 with zf.open(selected_files[i]) as f: img_data = io.BytesIO(f.read()) img = plt.imread(img_data) a.imshow(img) a.axis('off') plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Mariana_the_Mermaid
相关产品推荐
相关产品推荐

