首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从.PST文件中提取文本

从.PST文件中提取文本
EN

Stack Overflow用户
提问于 2019-10-22 15:16:38
回答 1查看 5.8K关注 0票数 3

我正在尝试提取.pst文件的内容(作为字符串/文本)。

我尝试了不同的答案,但没有找到任何相关的解决方案。

Python中的Outlook PST文件解析

从win32或pypff读取PST文件

pypff / libpff出口PST和OST

我主要关注的是库libpff (https://github.com/libyal/libpff),但我认为这个库对提取pst文本没有帮助。

我的代码:

代码语言:javascript
复制
import pypff
pst = pypff.file()
pst.open("my_pst_file.pst")

代码打开pst,但我不知道如何将其内容提取为txt。

EN

回答 1

Stack Overflow用户

发布于 2019-12-23 08:10:13

是的,您可以使用pypff提取文本。我也跟踪了这个链接(pypff / libpff出口PST和OST)。

pypff.file()可能会令人困惑,因为开发人员并没有为指令提供每个函数和属性的良好文档。我花了一段时间自己去探索。

这是我最近做的事。

代码语言:javascript
复制
# path to your pst file
opst = pypff.open(path)
root = opst.get_root_folder()

# 3 subfolders, for me, only 2nd one has content
# Use 'root.get_number_of_sub_folders()' to see which folder is blank
folder = root.get_sub_folder(1)
# 2 subfolders, the 2nd one is my inbox
inbox = folder.get_sub_folder(1)

# mail count in current folder
count = inbox.get_number_of_sub_items()

# Example of extracting info from one email
msg = inbox.get_sub_item(0)

subject = msg.subject
content = msg.plain_text_body.decode()
sender = msg.sender_name
header = msg.transport_headers
sent_time = msg.delivery_time

if msg.number_of_attachments > 0:
    # read from attachment 1
    size = attachment = msg.get_attachment(0).get_size()
    attachment_content = (msg.get_attachment(0).read_buffer(attach_size)).decode('ascii', errors='ignore')

对于那些想要使用pypff的人,不要使用pip安装。它只是从版本20161119构建的,它对我来说经常崩溃。

在他们的网站上用更新的版本构建。有一个setup.py,它应该很容易构建。

对于附件,ascii解码器并不理想。我已经尝试过所有98个解码器中的python3,没有一个能解码每一个字节。这意味着,单个方法无法解码所有。在我的例子中,utf_16可以提取内容,这对我来说已经足够好了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58507417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档