选择特定文件夹中的特定文件 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_1
和 dir_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))
我的源文件夹中有 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_1
和 dir_2
os.walk
或者使用负面清单,即所谓的'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))