Python:找到目标文件时如何获取对应文件夹在列表中的索引?
解决方案
要实现这个需求,核心是把os.walk遍历到的目录路径和你的目标文件夹列表做匹配,找到包含目标文件的文件夹后,直接用列表的index()方法获取索引。以下是具体实现方式:
基础场景:目标文件直接在列表中的文件夹下
如果目标文件xxx.png直接存放在Folder2这类列表内的文件夹根目录下,可以用下面的代码:
import os # 定义你的目标文件夹列表 folder_list = ["Folder1", "Folder2", "Folder3"] # 统一转换为绝对路径,避免相对路径导致的匹配失败 abs_folder_list = [os.path.abspath(folder) for folder in folder_list] target_file = "xxx.png" # 这里替换为你实际要遍历的根路径(即包含Folder1-3的上级目录) root_path = "./" for root, dirs, files in os.walk(root_path): # 先判断当前遍历的目录是否在目标文件夹列表中 if root in abs_folder_list: # 检查当前目录是否包含目标文件 if target_file in files: # 获取该文件夹在原列表中的索引 folder_index = abs_folder_list.index(root) print(f"找到目标文件,所在文件夹的索引为:{folder_index}") # 找到后可以直接退出循环,无需继续遍历 break
扩展场景:目标文件在列表文件夹的子目录中
如果xxx.png存放在Folder2的子文件夹里,需要调整判断逻辑,检查当前文件所在目录是否属于目标文件夹的子路径:
import os folder_list = ["Folder1", "Folder2", "Folder3"] abs_folder_list = [os.path.abspath(folder) for folder in folder_list] target_file = "xxx.png" root_path = "./" for root, dirs, files in os.walk(root_path): if target_file in files: # 遍历目标文件夹列表,匹配当前目录的父文件夹 for idx, folder in enumerate(abs_folder_list): if root.startswith(folder): print(f"找到目标文件,所在父文件夹的索引为:{idx}") break else: # 未匹配到目标文件夹,继续遍历 continue break
内容的提问来源于stack exchange,提问作者Kamil Loska
相关产品推荐
相关产品推荐

