Как найти автора офисного файла в python? - PullRequest
5 голосов
/ 11 августа 2011

Заголовок объясняет проблему, есть файлы документов и документов, для которых я хочу получить информацию об их авторах, чтобы я мог реструктурировать свои файлы.

os.stat возвращает только размер и дату, относящиеся к реальному файлуинформация.
open(filename, 'rb').read(200) возвращает много символов, которые я не смог разобрать.

Существует модуль под названием xlrd для чтения xlsx файлов.Тем не менее, это все еще не позволяет мне читать doc или docx файлы.Я знаю, что новые офисные файлы нелегко читать в non-msoffice программах, поэтому, если это невозможно, будет достаточно собрать информацию из старых офисных файлов.

Ответы [ 4 ]

6 голосов
/ 11 августа 2011

Поскольку 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
2 голосов
/ 12 августа 2011

Для старых офисных документов вы можете использовать hachoir-metadata . Я использую его ежедневно в сценарии, и он работает безупречно. Но я не знаю, работает ли он с новыми форматами файлов.

2 голосов
/ 11 августа 2011

Вы можете использовать COM-взаимодействие для доступа к объектной модели Word.Эта ссылка говорит о технике: http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/

Секрет при работе с любым из объектов офиса заключается в том, чтобы знать, к какому элементу получить доступ из подавляющего количества методов и свойств.В этом случае каждый документ имеет список BuiltInDocumentProperties.Интересующее свойство - «Последний автор».

После открытия документа вы получите доступ к автору с помощью чего-то вроде word.ActiveDocument.BuiltInDocumentProperties («Последний автор»)

1 голос
/ 21 сентября 2018

Как насчет использования библиотеки 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 здесь и учетной записи github здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...