读取.doc扩展名文件ElementTree

时间:2014-09-15 05:26:11

标签: xml python-2.7 docx elementtree doc

我使用.docx使用ElementTree包成功读取了zipfile个文件。但我意识到word/document.xml文件没有归档“.doc”。我查看了文档,但没有找到任何文档。怎么读? 对于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。

1 个答案:

答案 0 :(得分:3)

经过一番认真的搜索后,我意识到最好使用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()    

代码列表包含here

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