区分文件和目录

时间:2012-03-29 16:37:06

标签: python

所以我确定这是一个愚蠢的问题,但我查看了Python的文档并尝试了几个Google代码,但没有一个有效。

似乎以下内容应该有效,但它返回“False” 在我的目录/ 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。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

您可能希望改为使用os.walkhttp://docs.python.org/library/os.html#os.walk

当它返回目录的内容时,它会在不同的列表中返回文件和目录,从而无需进行检查。

所以你可以这样做:

import os

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

print 'directories:', dirs
print 'files:', files

答案 2 :(得分:0)

我认为os.path.isdir(os.path.join('/foo/bar', f))应该有用。