Python 区分文件和目录

Python 区分文件和目录,python,Python,所以我确信这是一个愚蠢的问题,但我已经浏览了Python的文档并尝试了一些Google代码,但没有一个有效 下面的代码似乎应该可以工作,但对于 在我的目录/foo/bar中,我有3项:1个文件夹“[Folder]”,1个文件“test”(无扩展名),1个文件“test.py” 我希望有一个脚本,可以区分文件夹和文件的一系列功能,但我不能找出任何工作 #!/usr/bin/python import os, re for f in os.listdir('/foo/bar'): print

所以我确信这是一个愚蠢的问题,但我已经浏览了Python的文档并尝试了一些Google代码,但没有一个有效

下面的代码似乎应该可以工作,但对于 在我的目录/foo/bar中,我有3项:1个文件夹“[Folder]”,1个文件“test”(无扩展名),1个文件“test.py”

我希望有一个脚本,可以区分文件夹和文件的一系列功能,但我不能找出任何工作

#!/usr/bin/python
import os, re
for f in os.listdir('/foo/bar'):
    print f, os.path.isdir(f)

当前所有内容都返回false。

这是因为
listdir()
返回
/foo/bar
中的文件名。当您稍后对其中一个执行
os.path.isdir()
操作时,操作系统将根据当前工作目录对其进行解释,该目录可能是脚本所在的目录,而不是
/foo/bar
,并且可能不包含指定名称的目录。不存在的路径不是目录,因此
isdir()
返回
False.


使用完整的路径名。最好的方法是使用
os.path.join
,例如
os.path.isdir(os.path.join('/foo/bar',f))

我想
os.path.isdir(os.path.join('/foo/bar',f))
应该可以使用
os.walk

当它返回目录的内容时,它会返回单独列表中的文件和目录,无需进行检查

所以你可以做:

import os

root, dirs, files = next(os.walk('/foo/bar'))

print 'directories:', dirs
print 'files:', files
见这个问题: