为何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
相关产品推荐
相关产品推荐

