Python docx AttributeError: объект «WindowsPath» не имеет атрибута «искать» - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу вставить около 250 изображений с их именами в файл docx.

Мой test.py файл:

from pathlib import Path
import docx
from docx.shared import Cm

filepath = r"C:\Users\Admin\Desktop\img"
document = docx.Document()

for file in Path(filepath).iterdir():
#    paragraph = document.add_paragraph(Path(file).resolve().stem)
    document.add_picture(Path(file).absolute(), width=Cm(15.0))

document.save('test.docx')

После отладки я получил эту ошибку:

Exception has occurred: AttributeError
'WindowsPath' object has no attribute 'seek'
  File "C:\Users\Admin\Desktop\test.py", line 10, in <module>
    document.add_picture(Path(file).absolute(), width=Cm(15.0))

Как мне избежать этой ошибки?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

В моем случае, изменение '/' для '\' в пути помогло.Пример: "C: / Users / Admin / Desktop / img" (что, я полагаю, вероятно то, что делает обертывание в FileIO, но в моем случае это не сработало)

Вы также можете добиться этого, используя

os.path.join(mydir, myfile)

как объяснено здесь https://stackoverflow.com/a/2953843/11126742

0 голосов
/ 22 февраля 2019

Вы пытались использовать io.FileIO ?

from io import FileIO

from pathlib import Path
import docx
from docx.shared import Cm

filepath = r"C:\Users\Admin\Desktop\img"
document = docx.Document()

for file in Path(filepath).iterdir():
#    paragraph = document.add_paragraph(Path(file).resolve().stem)
    document.add_picture(FileIO(Path(file).absolute(), "rb"), width=Cm(15.0))

document.save('test.docx')

Я столкнулся с той же ошибкой при использовании PyPDF2 при передаче пути к файлу в PdfFileReader.Когда я обернул файл PDF в FileIO примерно так FileIO(pdf_path, "rb"), ошибка исчезла, и я смог успешно обработать файл.

...