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

2024-04-26 01:36:06 发布

您现在位置: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的子目录。在


Tags: 文件代码nameinforos文件名root
2条回答

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

import os
os.listdir("Oracle")

要从脚本打印目录,请使用

^{pr2}$

目前,当您找到一个名为Oracle的目录时,您将列出层次结构中处于同一级别的文件,而不是列出Oracle文件夹中包含的文件,因为os.walk返回的元组包含同一级别的目录和文件。在

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

  • 找到Oracle文件夹后,只使用walk中的目录名,并使用listdir

    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
    
  • 忽略目录名,使用根目录中的最后一个组件并测试它是否是Oracle:

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

相关问题 更多 >