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

TensorFlow花卉分类数据集图片Resize时遇权限错误求助

解决花卉识别图片尺寸调整的权限错误问题

可能的问题根源

  • OneDrive同步锁:数据集存放在OneDrive目录下时,OneDrive的实时同步进程会占用文件,导致修改保存时触发权限冲突,手动修改权限也无法绕过这个同步锁机制。
  • 路径空格不一致:代码中第一个os.listdir的路径末尾带有空格 Training Data,但后续拼接的路径是Training Data,这种不一致可能导致部分文件路径解析异常,触发类似权限错误的问题。
  • 文件占用冲突:直接在打开文件的状态下保存到原路径,部分系统或文件锁机制会阻止这种操作,表现为权限错误。

针对性解决方案

1. 迁移数据集到本地非同步目录(最推荐)

把Training Data文件夹复制到非OneDrive的本地路径(比如C:/FlowerDataset/Training Data),彻底避开OneDrive的同步锁问题,修改后的代码如下:

import os
from PIL import Image

target_size = (224, 224)
base_dir = 'C:/FlowerDataset/Training Data'

for class_name in os.listdir(base_dir):
    class_dir = os.path.join(base_dir, class_name)
    if not os.path.isdir(class_dir):
        continue  # 跳过非文件夹的文件,避免报错
    for filename in os.listdir(class_dir):
        image_path = os.path.join(class_dir, filename)
        try:
            with Image.open(image_path) as img:
                img = img.resize(target_size)
                img.save(image_path)
        except Exception as e:
            print(f"处理文件失败 {image_path}: {e}")

2. 修改代码避免原文件占用冲突

如果不想移动数据集,可先将修改后的图片保存到临时文件,再替换原文件,绕过文件占用问题:

import os
import shutil
from PIL import Image

target_size = (224, 224)
base_dir = 'C:/Users/myname/OneDrive/Desktop/pyimportant/Automation/Flower Classification V2/V2/Training Data'

for class_name in os.listdir(base_dir):
    class_dir = os.path.join(base_dir, class_name)
    if not os.path.isdir(class_dir):
        continue
    for filename in os.listdir(class_dir):
        image_path = os.path.join(class_dir, filename)
        temp_path = image_path + ".tmp"
        try:
            with Image.open(image_path) as img:
                img = img.resize(target_size)
                img.save(temp_path)
            # 替换原文件
            shutil.move(temp_path, image_path)
        except Exception as e:
            print(f"处理文件失败 {image_path}: {e}")
            # 清理临时文件
            if os.path.exists(temp_path):
                os.remove(temp_path)

3. 修正路径空格问题

确保代码中所有路径的Training Data部分格式一致,要么都带空格要么都不带,避免路径解析错误。比如把第一个os.listdir的路径改成和后续一致的:

for class_name in os.listdir('C:/Users/myname/OneDrive/Desktop/pyimportant/Automation/Flower Classification V2/V2/Training Data'):

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:31:03