在与模式匹配的目录中递归列出文件

时间:2017-05-24 13:29:25

标签: python

我试图以递归方式列出名为Oracle的子目录中的所有文件名(但不列出其他子目录中的列表文件)。

我有以下代码:

for root, dirs, files in os.walk(r"Y:\Data\MXD_DC\DataSourceChange", topdown=True):
    for name in dirs:
        if fnmatch.fnmatch(name, 'Oracle'):
            for filename in files:
                fullpath = os.path.join(root, filename)
                print "FullPath is: " + fullpath

我只能列出所有子目录的所有文件名。它甚至没有进入名为Oracle的子目录。

2 个答案:

答案 0 :(得分:0)

如果要列出特定目录中的文件,可以使用

import os
os.listdir("Oracle")

从脚本打印目录使用此

import os
print "%s" %os.listdir("Oracle")

答案 1 :(得分:0)

目前,当您找到名为Oracle的目录时,您列出了层次结构中处于同一级别的文件,而不是列出Oracle文件夹中的文件包含,因为{返回的元组由{ {1}}包含同一级别的目录和文件。

您有两种方法可以列出预期的文件:

  • 仅使用os.walk中的dirnames并在找到Oracle文件夹后使用walk

    listdir
  • 忽略dirnames,使用root中的最后一个组件并测试它是否为Oracle:

    for root, dirs, files in os.walk(r"Y:\Data\MXD_DC\DataSourceChange", topdown=True):
    for name in dirs:
        if name == 'Oracle':
            path = os.path.join(root, name)
            for filename in os.listdir(path):
                fullpath = os.path.join(path, filename)
                print "FullPath is: " + fullpath