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

Python中os.listdir提示文件不存在但目录实际存在,原因何在?

问题分析与解决

核心原因很直白:相对路径的解析基准是当前工作目录,不是脚本文件所在的目录。

结合你的实际情况拆解:

  • os.getcwd()返回/Users/John/Desktop/Leukemia,说明你是在这个项目根目录下启动的脚本
  • 写../dataset/leukemia时,Python会从当前工作目录往上退一级,去寻找/Users/John/Desktop/dataset/leukemia——这个路径不存在,所以触发找不到文件的错误
  • 去掉../后,路径变成dataset/leukemia,对应/Users/John/Desktop/Leukemia/dataset/leukemia,这个真实存在的路径自然能正常访问

你之前混淆了相对路径的参照对象,误以为它是相对于脚本文件的位置,但实际上Python执行脚本时,是按你启动脚本时所在的目录来解析相对路径的。

如果想让路径不受启动目录影响,更稳妥的写法是基于脚本自身的绝对路径构造:

import os
if __name__ == '__main__':
    # 获取当前脚本所在目录的绝对路径
    script_dir = os.path.dirname(os.path.abspath(__file__))
    # 拼接数据集路径
    leukemia_dir = os.path.join(script_dir, "dataset", "leukemia")
    file_names = os.listdir(leukemia_dir)

这样不管你在哪个目录下运行脚本,都能正确定位到数据集文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:45:16