Использование python-docx для пакетной печати имени последнего пользователя для изменения

Я пытаюсь использовать Python для печати имен последних пользователей, чтобы изменить кучу документов (docx). На самом деле этот скрипт должен возвращать кучу разных имен. Мне приходится смешивать кучу разных модулей, но либо я что-то не так делаю, либо docx не нравится пакетная работа. Кто-нибудь получил больше опыта в этом, что может быть в состоянии найти проблему?

from docx import Document
import docx, glob, os

for filename in glob.glob('/Users/owner/Desktop/Rename/*.docx'):
fullfilename=os.path.abspath(filename)

document = Document('fullfilename')
core_properties = document.core_properties
print(core_properties.last_modified_by)

Для справки, я объединил для этого два скрипта, и 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.


person YesIAmThatGuy    schedule 09.10.2016    source источник
comment
Как это связано с тегом batch-file??   -  person aschipfl    schedule 09.10.2016
comment
Хороший звонок, нажал не на ту партию   -  person YesIAmThatGuy    schedule 09.10.2016


Ответы (1)


Основная проблема, по-видимому, заключается в отсутствии отступов. Python использует отступы (вместо фигурных скобок), чтобы определить, каким должен быть блок вашего цикла. Так что в этом случае он работает только один раз. Вам нужно следующее:

import glob, os
from docx import Document

for filename in glob.glob('/Users/owner/Desktop/Rename/*.docx'):
    fullfilename = os.path.abspath(filename)
    document = Document('fullfilename')
    core_properties = document.core_properties
    print(core_properties.last_modified_by)

Обратите внимание, что нет необходимости импортировать docx, так как вы не используете его (напрямую). В общем, объект Document — это все, что нужно импортировать в проекты python-docx.

person scanny    schedule 09.10.2016
comment
Спасибо, Scanny, я видел, что вы довольно активно задавали вопросы. Я благодарен, что ты вернулся ко мне. :) Я на самом деле сделал отступ в своем сценарии, я, должно быть, проглядел его, когда набирал его здесь. Я удалил второй docx импорта, но у меня все еще возникают проблемы. Около 10 строк, описывающих путь к каждому файлу, ответ `Пакет не найден в '%s % pkg_file', перефразированный различными способами. - person YesIAmThatGuy; 10.10.2016
comment
@Josh: Если вы просто распечатаете имя файла, вы получите ожидаемые имена файлов? Кроме того, я заметил, что вы поместили fullfilename в кавычки, что, конечно, попытается открыть файл с именем «fullfilename». Возможно, вам следует провести небольшое тестирование, чтобы попытаться сузить его, а затем отредактировать свой вопрос, чтобы сделать его более точным. В частности, использование минимально точного кода, который не работает, а также точное указание результата вместе с любыми сообщениями об ошибках. Так будет легче помочь :) Вы можете оставить комментарий @scanny, чтобы сообщить нам, чтобы мы взглянули еще раз. - person scanny; 10.10.2016
comment
Блуммин, черт возьми, @scanny, это было быстро! Я пытался запустить его отдельно, прежде чем публиковать, но я повнимательнее рассмотрю часть имени файла как можно скорее. Спасибо друг :) - person YesIAmThatGuy; 10.10.2016