【问题标题】:Distinguishing Files From Directories区分文件和目录
【发布时间】:2012-04-13 08:25:11
【问题描述】:

所以我确信这是一个愚蠢的问题,但我查看了 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。

【问题讨论】:

标签: python


【解决方案1】:

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

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

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

      我想os.path.isdir(os.path.join('/foo/bar', f)) 应该可以工作。

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 1970-01-01
        • 2012-11-21
        • 2013-11-18
        相关资源
        最近更新 更多