You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:44:59