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

Python目录路径斜杠混用引发PermissionError权限拒绝问题求助

解决路径斜杠混用导致的PermissionError问题

嘿,我来帮你搞定这个问题!你遇到的PermissionError本质上是手动拼接路径时混用了Windows反斜杠\和Unix风格正斜杠/,系统没法正确解析这个混乱的路径,才抛出了权限相关的错误(其实不一定是真的没权限,而是路径识别失败了)。之前运行pgm没问题,应该是pgm的路径处理逻辑更健壮,而你的Python脚本手动拼路径的方式在环境变化时就踩坑了。

下面给你两个靠谱的解决方案,彻底避免路径拼接的问题:

方案1:用os.path模块构建路径(全系统兼容)

Python内置的os.path.join()会自动根据当前操作系统选择正确的路径分隔符,完全不用你手动加斜杠。修改后的代码如下:

import os
from tensorflow.keras.preprocessing import image
import numpy as np
from tensorflow.keras.applications.vgg16 import preprocess_input

PATH = os.getcwd()
data_path = os.path.join(PATH, 'data')  # 自动拼接正确路径
data_dir_list = os.listdir(data_path)
img_data_list = []

for dataset in data_dir_list:
    dataset_path = os.path.join(data_path, dataset)
    print(f'Loaded the images of dataset-{dataset}')
    for img_name in os.listdir(dataset_path):
        img_path = os.path.join(dataset_path, img_name)
        img = image.load_img(img_path, target_size=(224, 224))
        x = image.img_to_array(img)
        x = np.expand_dims(x, axis=0)
        x = preprocess_input(x)
        print('Input image shape:', x.shape)
        img_data_list.append(x)

方案2:用pathlib模块(更现代的写法)

Python 3.4+推出的pathlib是面向对象的路径处理工具,代码更简洁易读,同样自动适配系统分隔符:

from pathlib import Path
from tensorflow.keras.preprocessing import image
import numpy as np
from tensorflow.keras.applications.vgg16 import preprocess_input

PATH = Path.cwd()
data_path = PATH / 'data'  # 用/直接拼接路径,太方便了!
img_data_list = []

for dataset_dir in data_path.iterdir():
    if dataset_dir.is_dir():  # 先确认是目录,避免误处理文件
        print(f'Loaded the images of dataset-{dataset_dir.name}')
        for img_path in dataset_dir.iterdir():
            if img_path.is_file():  # 只处理文件,跳过子目录
                img = image.load_img(img_path, target_size=(224, 224))
                x = image.img_to_array(img)
                x = np.expand_dims(x, axis=0)
                x = preprocess_input(x)
                print('Input image shape:', x.shape)
                img_data_list.append(x)

额外检查点

如果改完路径还是报错,那就要排查真·权限问题了:

  • 确认目标路径C:\vgg_test\vgg_trial\data\train\DR(修正后的正确路径)确实存在
  • 运行Python脚本的用户账号有没有这个目录的读取权限
  • 路径里有没有特殊字符、空格?不过用上面两个方法的话,这些都会被自动处理,不用你操心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:28:07