如何从所有目录的安然电子邮件数据集中提取所有电子邮件文本

问题描述

我已经下载了 enron 电子邮件数据集 [click here to see the structure of the whole dataset],我正在尝试从 enron 数据集下所有目录下的所有文本文件提取所有电子邮件文本。

请看下面这是我从教程中得到的。

import os
from email.parser import Parser
rootdir = "/Users/JJ/Desktop/JJ/0- UoB 2020:2021/SummerProj/Code /Dataset/enron/maildir/lay-k/family"


def email_analyse(inputfile,email_body):
    with open(inputfile,encoding='utf-8',mode='r') as f:
        data = f.read()

    email = Parser().parsestr(data)
    email_body.append(email.get_payload())


to_email_list = [] #from_email_list = []
email_body = []

for directory,subdirectory,filenames in  os.walk(rootdir):     
    for filename in filenames:

       email_analyse(os.path.join(directory,filename),email_body )

问题:当我将 rootdir 指定为:/Dataset/enron/maildir/lay-k/family 我能够成功提取电子邮件正文并将它们放在新创建的文本文件下.

但是,当我将 rootdir 更改为:/Dataset/enron/maildir 时,当我尝试运行它时,我往往会收到此错误

(result,consumed) = self._buffer_decode(data,self.errors,final) UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 3131 中的字节 0x80:起始字节无效

[Here is a detailed screenshot of the error]

我怀疑我的 'email_analysis' 函数在路径上运行不佳,因为在我代码的最后一行,当我使用 :

print(os.path.join(directory,filename))

代替:

email_analysis(os.path.join(directory,email_body)

请帮我一把,谢谢好心的陌生人!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)