Python解析许多word文档

时间:2013-06-08 09:09:18

标签: python windows ms-word

我写了一个小程序,它从word文档中提取数据并对其进行处理。该工具仅在Windows(XP)上运行并使用PyWin32库。

一切正常但有时我会遇到以下问题,这对用户来说非常烦人。

1)我使用此代码隐藏Word,但有时Word会打开并打开所有文档。这种情况非常不可靠,我无法找出发生这种情况的原因。有人注意到同样的问题吗?

word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False

2)程序使用几次后会有几百个文件,程序会由于内存不足而崩溃。有没有人建议我如何处理这个问题?

编辑:我正在加载这样的文件:

def convert_word_to_text(path, id):
"""Converts the word documents in text format."""

    word.Documents.Open(path)
    doc = word.ActiveDocument
    table = doc.Tables(1)
    # Process the data

for file in files:
    convert_word_to_text(file, id)

非常感谢任何帮助! 孙燕姿

2 个答案:

答案 0 :(得分:2)

自打开文档后:

word.Documents.Open(path)
doc

你也应该关闭它。像这样:

doc.close()
函数convert_word_to_text末尾的

可能会有所帮助。

答案 1 :(得分:1)

对于(2),我的猜测是你正在将许多文件加载到内存中然后处理它们。相反,您应该使用生成器或for循环,单独加载每个文件,提取文本/任何内容,然后转到下一个文件。加载外部XML或二进制文件时(例如,带有PIL的图像,带有openpyxl的excel文件等),这种问题似乎经常发生。