python递归的os.path追加一些刹车

问题描述 投票:0回答:1

嘿,这是我的第一篇文章(!)只是为我的小项目寻找头痛递归解决方案:)

尝试收集所有文件夹路径(递归),其中包含一些特定文件到路径数组。

例如:我的(根)路径是:

C:/测试

文件夹测试包含文件'test.txt'和一些文件夹:'1','2','3'。它们中的任何一个都包含'test.txt'! (如果找不到'text.txt':只需制动循环,不要在子文件夹中搜索!)

现在我的函数将查找'test.txt',然后将所有文件夹收集到我的folderslist中:

if os.path.exists(os.path.join(path, 'test.txt')):
full_list = os.listdir(path)
        folderslist = []
        for folder in full_list:
            if os.path.isfile(os.path.join(path, folder)) == 0:
                folderslist.append(os.path.join(path, folder))

它工作不错,只是没有重复...真的不知道如何用相同的列表再次调用该函数,并迫使他改变'当前路径'...不确定'list'是否是最好的数据结构我再次打电话给它。

我的目标是在此列表的每个文件夹中进行一些操作:

c:/ test c:/ test / 1 c:/ test / 2 c:/ test / 3

但如果有更多的文件夹(不包含'test.txt'所以,只是不要将它添加到我的文件夹列表,不要查看内部)

希望我的第一篇文章足够清楚:X

python recursion operating-system file-manager
1个回答
0
投票

您可以使用os.walk遍历子文件夹,如果找不到test.txt,请清除目录列表,以便os.walk不再进一步遍历其子文件夹:

import os
folderslist = []
for root, dirs, files in os.walk('c:/test'):
    if 'test.txt' in files:
        folderslist.append(root)
    else:
        dirs.clear()
© www.soinside.com 2019 - 2024. All rights reserved.