正在读取.doc扩展文件ElementTree



我已使用ElementTree包成功读取.docx文件,使用zipfile。但我意识到.doc文件没有存档"word/document.xml"。我查了一下文件,但没有找到。它是怎么读的?对于docx,我使用了:

import zipfile as zf
import xml.etree.ElementTree as ET
z = zf.ZipFile("test.docx")
doc_xml = z.open('word/document.xml')
tree = ET.parse(doc_xml)

使用上面的.doc给出:

KeyError: "There is no item named 'word/document.xml' in the archive"

我在ElementTree文档中看到了一些可阅读的内容,但那只是针对xml文件的。

doc_xml = open('yesblue.doc','r')  

这个怎么办?也许类似于在python中将.doc转换为.docx

编辑:.doc格式以二进制形式存储数据,不能使用XML。

经过认真的搜索,我意识到最好使用comtypes包将其从.doc格式转换为.docx格式。这有其自身的一系列缺点,如Windows exclusivity和需要安装Microsoft Office。

import sys
import os
import comtypes.client
in_file = os.path.abspath('')
out_file = os.path.abspath('yesblue') #name of output file added to the current working directory 
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open('yesblue.doc') #name of input file
doc.SaveAs(out_file, FileFormat=16)  # output file format to Office word Xml default (code=16)
doc.Close()
word.Quit()    

代码列表包含在此处。

输出的docx文件可用于ElementTree中的进一步处理。

相关内容

  • 没有找到相关文章

最新更新