如何用Python按指定变量筛选文件夹并随机选择目标文件夹?
分步实现带筛选的文件夹随机选择
实现思路
先把目录下的文件夹按前缀(peter/denise/mark)分组,再随机选一个前缀,最后从该前缀对应的文件夹列表里随机选一个目标文件夹。
完整代码实现
import os import random folder_path = "你的目标目录路径" # 1. 获取目录下所有文件夹并按前缀分组 folder_groups = {} for item in os.listdir(folder_path): item_path = os.path.join(folder_path, item) if os.path.isdir(item_path): # 按下划线分割前缀(比如peter_folder1分割为peter) prefix = item.split("_")[0] if prefix not in folder_groups: folder_groups[prefix] = [] folder_groups[prefix].append(item) # 2. 随机选择一个前缀 selected_prefix = random.choice(list(folder_groups.keys())) # 3. 从选中前缀的文件夹列表里随机选一个 selected_folder = random.choice(folder_groups[selected_prefix]) print(f"选中的文件夹:{selected_folder}")
代码说明
- 替换
folder_path为你实际的目录路径,无需用os.chdir切换目录,直接用os.path.join拼接路径更安全。 - 分组逻辑通过下划线分割文件夹名获取前缀,如果你的命名规则不同(比如用其他分隔符),可修改
split("_")[0]部分。 - 先选前缀再选文件夹,完全匹配你需要的“先筛选再随机”逻辑。
针对你现有代码的修正
你原来的代码存在语法错误(filter语句缺少闭合括号),且仅完成了筛选文件夹的操作,修正后可拿到完整的文件夹列表:
import os folder_path = "你的目标目录路径" # 修正语法错误,同时将filter结果转换为列表 sorted_folders = list(filter(lambda x: os.path.isdir(os.path.join(folder_path, x)), os.listdir(folder_path))) print(sorted_folders)
内容的提问来源于stack exchange,提问作者Jannly
相关产品推荐
相关产品推荐

