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

Python递归遍历Outlook文件夹时如何收集拼接完整路径

获取Outlook所有文件夹完整路径的修改方案

你只需要在递归调用时传递上级路径前缀,逐层拼接文件夹名即可,修改后的可直接运行代码如下:

import win32com.client

def DumpFoldersRecursive(folders, parent_path=""):
    folder_paths = []
    for i in range(1, folders.Count + 1):
        folder = folders[i]
        # 根目录无前缀,直接取文件夹名,其余层级拼接反斜杠
        if not parent_path:
            current_path = folder.Name
        else:
            current_path = f"{parent_path}\\{folder.Name}"
        folder_paths.append(current_path)
        # 递归获取子文件夹路径并合并到结果列表
        folder_paths.extend(DumpFoldersRecursive(folder.Folders, current_path))
    return folder_paths

def DumpOutlookFolders():
    outlook = win32com.client.Dispatch("Outlook.Application")
    mapi_namespace = outlook.GetNamespace("MAPI")
    all_folder_paths = DumpFoldersRecursive(mapi_namespace.Folders)
    outlook = None
    # 打印所有路径,格式和你给出的示例完全匹配
    for path in all_folder_paths:
        print(path)
    # 可选:将路径写入本地txt文件
    # with open("outlook_folder_paths.txt", "w", encoding="utf-8") as f:
    #     f.write("\n".join(all_folder_paths))
    return all_folder_paths

# 执行函数即可得到所有完整路径
all_paths = DumpOutlookFolders()

核心改动说明

  • 移除了原代码中无用的indent参数,替换为parent_path参数用于传递上层文件夹的完整路径
  • 每遍历到一个文件夹就先拼接当前完整路径存入结果列表,再递归遍历子文件夹,将返回的子路径合并到当前列表
  • 最终函数返回的列表中就包含了所有层级文件夹的完整路径
    如果需要过滤特定路径(比如只保留收件箱相关路径),可以在输出时增加判断条件即可。

内容的提问来源于stack exchange,提问作者Erika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:24:01