选择特定文件夹中的特定文件 python os.walk

Selecting specific files in specific folders python os.walk

我的源文件夹中有 20 个子文件夹。我只想对其中的 8 个文件夹执行 os.walk 操作,而 select 只对扩展名为 txt 的文件执行操作。这可能吗?

import os
for root, dirs, files in os.walk(r'D:\Source'):
    for file in files:
        if file.endswith(".txt"):
             print(os.path.join(root, file))

您可以像这样使用肯定的目录列表:

import os
dirs_positive_list = ['dir_1', 'dir_2']

for root, dirs, files in os.walk(r'D:\Source'):
    dirs[:] = [d for d in dirs if d in dirs_positive_list]
    for file in files:
        if file.endswith(".txt"):
             print(os.path.join(root, file))

这只会处理 dir_1dir_2

中存在的 txt 文件

os.walk

的帮助中描述了 rids 的就地编辑

或者使用负面清单,即所谓的'black list':

import os
black_list = ['dir_3'] # insert your folders u do not want to process here

for root, dirs, files in os.walk(r'D:\Source'):
    print(dirs)
    dirs[:] = [d for d in dirs if d not in black_list]
    for file in files:
        if file.endswith(".txt"):
             print(os.path.join(root, file))