#python #файлы #изображения
Обычными средствами не получается добавить изображение в конец файла. Код old_image = open('Pupils.png', 'r').read() new_image = open('new_pro.docx', 'a') new_image.write(old_image) new_image.close() Какие есть способы решить эту задачу?
Ответы
Ответ 1
Python хорош тем что на каждый случай есть библиотека. В данном случае это либа docx. Сначала установим её (на Linux нужны права root) pip install python-docx А затем просто добавим изображение. from docx import Document document = Document("./foo.docx") document.add_picture('./image-filename.png') document.save("./foo.docx")Ответ 2
К библиотеке python-docx предлагаю добавить docxtpl. Работает очень просто. Нужно сделать шаблон и в нем разметить место куда чего вставлять. На гите можно посмотреть примеры разметки. ПримерыОтвет 3
*.docx - это Zip-архив со служебными файлами, описывающими документ. Служебные файлы в формате XML, поэтому вы не можете добавить в документ изображение приведенным способом (просто дописав байты в архив). Для решения вам необходимо использовать специальные библиотеки, которые берут парсинг XML на себя и гарантируют корректность получившегося документа согласно стандарту. Пример такой библиотеки: python-docx (pip install python-docx). Пример из официальной документации: from docx import Document doc = Document("") doc.add_picture('image-filename.png') Вместо полного пути к изображению вы можете использовать file-like объект (например, BytesIO): with open("yo.png", "rb") as img: doc.add_picture(img) При необходимости вы можете изменять размер изображения. В этом деле главное помнить, что в документе все размеры - это сантиметры, дюймы и производные, а не пиксели.
Комментариев нет:
Отправить комментарий