我写了一个小程序,它从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)
非常感谢任何帮助! 孙燕姿
答案 0 :(得分:2)
自打开文档后:
word.Documents.Open(path)
doc
你也应该关闭它。像这样:
doc.close()
函数convert_word_to_text
末尾的可能会有所帮助。
答案 1 :(得分:1)
对于(2),我的猜测是你正在将许多文件加载到内存中然后处理它们。相反,您应该使用生成器或for循环,单独加载每个文件,提取文本/任何内容,然后转到下一个文件。加载外部XML或二进制文件时(例如,带有PIL
的图像,带有openpyxl
的excel文件等),这种问题似乎经常发生。