问题描述
我已经下载了 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 (将#修改为@)