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

使用extract-msg模块批量导出Outlook .MSG数据至CSV的技术问询

批量导出文件夹中.msg文件数据到CSV的解决方案

嘿,你已经迈出了第一步——搞定单个.msg文件的导出,现在就差批量处理整个文件夹里的.msg文件啦!我来帮你把代码调整一下,轻松实现批量导出的需求。

先看修改后的完整代码

import extract_msg
import csv
import os

# 替换成你的.msg文件所在文件夹路径
msg_folder = r'C:\你的文件夹路径'
# 最终生成的CSV文件路径
csv_file_path = r'C:\Email.csv'

# 定义要导出的字段
fieldnames = ['Subject', 'Date', 'Sender']

# 第一步:先创建CSV文件并写入表头
with open(csv_file_path, mode='w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()

# 第二步:遍历文件夹里所有的.msg文件
for filename in os.listdir(msg_folder):
    # 只处理以.msg结尾的文件,忽略大小写
    if filename.lower().endswith('.msg'):
        msg_path = os.path.join(msg_folder, filename)
        try:
            # 读取.msg文件内容
            msg = extract_msg.Message(msg_path)
            # 整理需要导出的数据
            msg_data = {
                'Subject': msg.subject,
                'Date': msg.date,
                'Sender': msg.sender
            }
            # 追加写入CSV文件
            with open(csv_file_path, mode='a', newline='', encoding='utf-8') as file:
                writer = csv.DictWriter(file, fieldnames=fieldnames)
                writer.writerow(msg_data)
            print(f"已成功处理:{filename}")
        except Exception as e:
            print(f"处理文件{filename}时出错:{str(e)}")

关键改动说明

  • 遍历文件夹:用os.listdir()获取文件夹内所有文件,再通过endswith('.msg')筛选出目标文件,搭配os.path.join()拼接完整路径,避免因路径格式问题报错。
  • CSV写入逻辑:先以w模式创建CSV并写入表头,之后循环里用a模式追加每条数据,这样不会覆盖已写入的内容,保证所有数据都在同一个文件里。
  • 异常处理:添加try-except块,就算遇到损坏的.msg文件或读取异常,程序也不会直接崩溃,还会提示具体错误,方便你排查问题。
  • 编码与换行优化:指定encoding='utf-8'避免中文乱码,newline=''是csv模块官方推荐的写法,防止生成多余空行。

灵活替代方案

如果你觉得os.listdir()的筛选逻辑不够直观,也可以用glob模块直接匹配所有.msg文件:

import glob
msg_files = glob.glob(os.path.join(msg_folder, '*.msg'))
for msg_path in msg_files:
    # 后续读取、写入逻辑和上面一致即可

这样就能一次性把文件夹里所有.msg文件的指定字段都导出到同一个CSV文件里啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:01:31