关于python中 os.path.isdir 和 os.path.isfile 方法的 " 坑 "

在这个坑浪费了很多时间,便记录下来。

我想判断data目录哪些路径是文件,于是:

import os

for path in os.listdir("data"):
    print(os.path.isfile(path))

运行后:
在这里插入图片描述
???????

觉得不对劲,于是:

import os

for path in os.listdir("data"):
    print(os.path.isdir(path))

运行:
在这里插入图片描述What???
查了资料,说os.path.isfile参数传的是绝对路径
于是:

import os

for path in os.listdir("data"):
    print(os.path.isdir(os.path.abspath(path)))

运行后:

在这里插入图片描述嗯????

后面调整了很多次,终于成功。。。。
正确代码:

import os

for path in os.listdir("data"):
    print(os.path.isfile(os.path.join("data", path)))

运行结果:

在这里插入图片描述
结论:
坑1:os.path.isfile和isdir方法要注意传入的路径(实测可以不是绝对路径,我估计方法内调用了os.oath.abspath,不然我的代码不会有误)
坑2:os.path.abspath方法可能得到的不是我们想要的。。(我对这个方法的预期是传入一个相对路径,返回绝对路径。但是,这个方法它只是把当前运行的.py文件的文件夹路径加上你传入的路径,真的坑)


版权声明:本文为zlh19960218原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。