我使用.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。
答案 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中进一步处理。