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