0

我写了一个小程序,从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)

非常感谢任何帮助!斯蒂芬妮

4

2 回答 2

2

由于您打开文档:

word.Documents.Open(path)
doc

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

doc.close()

在函数结束时convert_word_to_text可能会有所帮助。

于 2013-06-08T09:35:07.643 回答
1

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

于 2013-06-08T09:15:12.877 回答