所以我确定这是一个愚蠢的问题,但我查看了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。
答案 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.walk
:http://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))
应该有用。