Python代码在另一个折叠中搜索文件夹(而不是文件)

2024-10-04 01:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python相当陌生,我需要搜索一个名为:vvl*cpp的文件夹,该文件夹始终位于名为test的目录中。但问题是测试目录的深度是未知的。在

我试过了:

dir_name=glob.glob('./[a-z,_]*/test/vvl*cpp')
    file_dict={}
    for i in dir_name:
        name=re.compile(r"\.\/[a-z,_]*\/test\/vvl_")
        file_name=name.sub("",i)
        file_dict[file_name]=i

for key in sorted(file_dict.iterkeys()):
    print "%s: %s" % (key, file_dict[key])

但它只在子目录中搜索,但正如我提到的,我不知道测试目录的深度。可能是1,可能是10。请给我建议一条出路。我用的是python2.6


Tags: keynameintestre目录文件夹for
3条回答

如果您认为您需要两个组件,这一点很简单:

  1. 递归遍历目录的函数。在
  2. 一种检查目录是否匹配的函数。在

对于第一个:

def walk_tree(path):
    for root, dirs, files in os.walk(path):
        for dir in dirs:
            yield root, dir

对于第二个:

^{pr2}$

现在把它们放在一起:

def iter_targets(path):
    for dirparent, dirname in walk_tree(path):
        if is_a_match(dirparent, dirname):
            yield os.path.join(dirparent, dirname)

您可以使用os.walk()方法。在

import os

folders = []

for path, dirs, files in os.walk(starting_path):
    folders.append(path)
    print path

我喜欢这段代码的逻辑:

for myDir, myDirs, myFilenames in os.walk(myPath):
    print type(myDir), myDir
    print type(myDirs), myDirs
    print type(myFilenames), myFilenames

剩下的你可以用操作系统路径方法包括:操作系统路径.abspath(), 操作系统路径目录名()等

相关问题 更多 >