如何在Python中告诉目录中的文件?

时间:2009-03-01 08:11:13

标签: python file directory

使用os.listdir方法时,我需要告诉结果列表中的哪个项目是目录或只是文件。

当我不得不浏览此列表中的所有目录,然后在每个目录中添加文件时,我遇到了问题。

有没有办法浏览此列表并从中删除所有文件?如果无法使用os.listdir,我应该使用什么方法呢?

感谢。

4 个答案:

答案 0 :(得分:18)

使用os.path.isdir过滤掉目录。可能类似

dirs = filter(os.path.isdir, os.listdir('/path'))
for dir in dirs:
    # add your file

答案 1 :(得分:7)

这可能会更快:

current, dirs, files = os.walk('/path').next()

目录列表将位于dirs变量中。

答案 2 :(得分:2)

  

dirs = filter(os.path.isdir,os.listdir('/ path'))

注意除非'/ path'是当前工作目录,否则这将不起作用。 os.listdir()返回叶子名,所以你会问“os.path.isdir('file.txt')”,如果当前目录在别处,你会看到错误的'file.txt'。

应该在os.listdir()的输出上使用os.path.join()来获取完整的文件名。

children= [os.path.join('/path', child) for child in os.listdir('/path')]
directories= filter(os.path.isdir, children)

答案 3 :(得分:1)

要评估当前目录的子项:

w

示例输出

import os

# Creates a list with all children items
cd_children = os.listdir()

# Iterate through the list
for item in cd_children:

    # If item is a directory (folder) do...
    if os.path.isdir(item):
        print('{:<13}{:<21}'.format('folder', item))

    # If item is a file do ...
    elif os.path.isfile(item):
        print('{:<13}{:<21}'.format('file', item))

使用了osos.path