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

为何os.path.isdir()对绝对路径与join生成路径返回不同结果?

问题分析:os.path.isdir返回结果不同的原因

先看代码执行结果:

>>> os.getcwd()
'/Users/seungjunlee/test_dir'
>>> p1 = os.path.abspath('sub_1')
>>> p2 = os.path.join('test_dir', 'sub_1')
>>> os.path.isdir(p1)
True
>>> os.path.isdir(p2)
False

当前工作目录为test_dir,且该目录下存在sub_1子目录。两者返回结果不同的核心原因是路径指向的实际位置不一致:

  • p1通过os.path.abspath生成的绝对路径是/Users/seungjunlee/test_dir/sub_1,直接对应真实存在的子目录,所以os.path.isdir(p1)返回True。
  • p2是用os.path.join拼接出的相对路径test_dir/sub_1,而当前工作目录已经是/Users/seungjunlee/test_dir,这个相对路径对应的绝对路径会变成/Users/seungjunlee/test_dir/test_dir/sub_1——当前目录下并没有名为test_dir的子文件夹,自然找不到嵌套的sub_1,因此os.path.isdir(p2)返回False。

本质是你拼接路径时多嵌套了一层当前目录名,导致指向了不存在的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:26