标题解释了问题,有文档和文档文件我想要检索他们的作者信息,以便我可以重构我的文件。
os.stat
仅返回大小和日期时间,与实际文件相关的信息
open(filename, 'rb').read(200)
返回许多我无法解析的字符。
有一个名为xlrd
的模块用于读取xlsx
个文件。但是,这仍然不允许我阅读doc
或docx
个文件。我知道non-msoffice
程序上不容易读取新的office文件,所以如果不可能,从旧的office文件中收集信息就足够了。
答案 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)