Unix环境下Python2.7.5解析Outlook .msg并转存为.txt的方法
解决Python2.7.5读取.msg文件的语法错误与解析转存方案
1. 修复SyntaxError语法错误
你触发语法错误的原因是Python2.7不支持无with关键字的open(...) as f:写法,上下文管理器必须通过with触发。另外.msg是二进制格式,建议用二进制模式读取。修正后的基础代码如下:
import sys # Python2.7必须搭配with使用as语法,同时指定二进制读取模式 with open('/usr/tsp/TRIAL/input.msg', 'rb') as f: print f.read()
但直接读取二进制内容会得到乱码,因为.msg是Outlook专有格式,需要专门解析工具。
2. 正确解析.msg并转存为TXT文件
Unix环境下推荐使用msg-extractor(纯Python实现,无Windows依赖)来解析.msg文件,步骤如下:
步骤1:安装兼容Python2.7的库版本
执行以下命令安装:
pip install msg-extractor==0.21.0
步骤2:解析并转存的完整代码
from extract_msg import Message # 加载并解析.msg文件 msg = Message('/usr/tsp/TRIAL/input.msg') # 提取核心结构化内容 subject = msg.subject sender = msg.sender recipient = msg.to body_content = msg.body # 整理为TXT格式内容 txt_output = """主题: {0} 发件人: {1} 收件人: {2} 正文内容: {3}""".format(subject, sender, recipient, body_content) # 写入到目标TXT文件,指定UTF-8编码避免乱码 with open('/usr/tsp/TRIAL/output.txt', 'w') as txt_file: txt_file.write(txt_output.encode('utf-8'))
代码说明
extract_msg.Message会解析.msg的内部结构,直接提取主题、发件人、正文等可读内容,无需处理二进制乱码。- 若需提取抄送、附件等其他字段,可使用
msg.cc(抄送列表)、msg.attachments(附件对象列表)等属性。 - 若.msg包含HTML格式正文,可用
msg.htmlBody获取HTML内容,再通过BeautifulSoup(需安装beautifulsoup4==4.9.3版本)转换为纯文本。
内容的提问来源于stack exchange,提问作者Tushar Phalke
相关产品推荐
相关产品推荐

