如何在python中检索office文件的作者?

时间:2011-08-11 05:18:48

标签: python ms-office

标题解释了问题,有文档和文档文件我想要检索他们的作者信息,以便我可以重构我的文件。

os.stat仅返回大小和日期时间,与实际文件相关的信息 open(filename, 'rb').read(200)返回许多我无法解析的字符。

有一个名为xlrd的模块用于读取xlsx个文件。但是,这仍然不允许我阅读docdocx个文件。我知道non-msoffice程序上不容易读取新的office文件,所以如果不可能,从旧的office文件中收集信息就足够了。

4 个答案:

答案 0 :(得分:6)

由于docx文件只是压缩的XML,您只需解压缩docx文件,并可能将作者信息从XML文件中提取出来。不太确定它的存储位置,只是简单地查看它会让我怀疑它在dc:creator中存储为docProps/core.xml

以下是打开docx文件并检索创建者的方法:

import zipfile, lxml.etree

# open zipfile
zf = zipfile.ZipFile('my_doc.docx')
# use lxml to parse the xml file we are interested in
doc = lxml.etree.fromstring(zf.read('docProps/core.xml'))
# retrieve creator
ns={'dc': 'http://purl.org/dc/elements/1.1/'}
creator = doc.xpath('//dc:creator', namespaces=ns)[0].text

答案 1 :(得分:2)

您可以使用COM互操作来访问Word对象模型。此链接讨论了该技术:http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/

使用任何office对象时的秘诀是知道从绝大多数方法和属性中访问哪些项目。在这种情况下,每个文档都有一个BuiltInDocumentProperties列表。感兴趣的财产是“最后作者”。

打开文档后,您将使用word.ActiveDocument.BuiltInDocumentProperties(“最后作者”)

访问作者

答案 2 :(得分:2)

对于旧办公室文档,您可以使用hachoir-metadata。 我每天在脚本中使用它,它完美无缺。 但我不知道它是否适用于新的文件格式。

答案 3 :(得分:1)

如何使用docx库。您可以获取有关文件的更多信息,而不仅仅是作者。

#sudo pip install python-docx
#sudo pip2 install python-docx
#sudo pip3 install python-docx


import docx

file_name = 'file_path_name.doxs'

document = docx.Document(docx = file_name)
core_properties = document.core_properties
print(core_properties.author)
print(core_properties.created)
print(core_properties.last_modified_by)
print(core_properties.last_printed)
print(core_properties.modified)
print(core_properties.revision)
print(core_properties.title)
print(core_properties.category)
print(core_properties.comments)
print(core_properties.identifier)
print(core_properties.keywords)
print(core_properties.language)
print(core_properties.subject)
print(core_properties.version)
print(core_properties.keywords)
print(core_properties.content_status)

找到有关docx库here和github帐户为here的更多信息