2016-10-09 6 views
0

Мне нужно уметь просматривать атрибут «последний изменен» для файлов xlsx с использованием Python. Я смог сделать для docx-файлов и надеялся, что архитектура будет достаточно похожа на другие приложения Office, но, к сожалению, нет. Кто-нибудь знает о подобном модуле для xlsx?Атрибут «Последнее изменение» (имя пользователя, а не время) для xlsx с использованием Python

Это скрипт для просмотра поля с помощью питона-DOCX:

from docx import Document 
import docx 

document = Document('mine.docx') 
core_properties = document.core_properties 
print(core_properties.last_modified_by) 

Я использую Python 3.4 и DOCX 0.8.6 здесь.

+0

Просто повторить: «Последнее изменение» Я ищу имя пользователя, n от времени. :) – YesIAmThatGuy

+0

Метод, представленный в http://stackoverflow.com/a/7021492/293494, вероятно, должен работать с файлами .xlsx. – mkj

+0

Спасибо mkj, что выглядит интересно. Я посмотрю и дам вам знать, как я нахожусь. – YesIAmThatGuy

ответ

0
import os 
filename = "C:\\test.xlsx" 
statsbuf = os.stat(filename) 
print "modified:",statsbuf.st_mtime 



f = os.path.getmtime('C:\\test.xlsx') 
print f 

с начала

+0

Спасибо за сообщение. Это установлено для поиска времени модификации, а не для пользователя, внесшего последнее изменение. набор для Python 2, а не 3. – YesIAmThatGuy

+0

, работающий на python 3, насколько мне известно. Вы ищете * *. Извините неправильно прочитайте сообщение – rafalf

+0

Это нормально, название моего вопроса, вероятно, было не таким ясным, как это может быть, поэтому я изменил его сейчас. Для 3 вам нужны скобки вокруг функции печати. ​​:) – YesIAmThatGuy

1

Для .xlsx файлов, вы можете использовать это (набор filename к имени файла .xlsx):

import xml.etree.ElementTree 
import xml.etree.cElementTree as ET 
import zipfile 

corePropNS = '{http://schemas.openxmlformats.org/package/2006/metadata/core-properties}' 

zf = zipfile.ZipFile(filename, 'r') 
part = zf.open('docProps/core.xml', 'r') 
tree = ET.XML(part.read()) 
lastModifiedBy = tree.find(corePropNS+'lastModifiedBy').text 

print(lastModifiedBy) 

Я не проверял, но я 'd ожидать, что тот же код будет работать и для других файлов OOXML (например, .docx)