2014-09-15 5 views
0

Я успешно прочитал .docx файлы, используя пакет ElementTree, используя zipfile. Но я понял, что нет архива 'word/document.xml' для .doc файлов. Я заглянул в документы, но не нашел. Как его можно прочитать? Для DOCX, я использовал:Чтение файла расширения .doc, ElementTree

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') 

Как это сделать? Может быть, что-то вроде преобразования .doc в .docx в самом python.

Редактировать. Формат .doc хранит данные в двоичном формате, а XML не может использоваться для него.

ответ

1

После серьезного поиска я понял, что было бы лучше использовать пакет 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.

Смежные вопросы