Ошибка img2pdf pyhon
задача стоит такая, есть файлы типа 1.ipg, 2.ipg, rtrrt.jpg, ghthh.jpg Соединение файлов должно быть обязательно 1.ipg, 2.ipg,остальные не важно. Который ниже работает, но на некоторых выдает ошибку
import img2pdf
import glob
import os
dir = os.path.abspath(os.curdir)
print(dir)
dir_new = dir.split('\\')[-1]
print(dir_new)
with open(dir_new +".pdf", "wb") as f:
f.write(img2pdf.convert(glob.glob("*.jpg")), rotation=img2pdf.Rotation.ifvalid)
Код ошибки:
Traceback (most recent call last):
File "C:/pyserver/1.py", line 13, in <module>
f.write(img2pdf.convert(glob.glob("*.jpg")), rotation=img2pdf.Rotation.ifvalid)
TypeError: write() takes no keyword arguments
Ответы (2 шт):
В коде происходит ошибка, потому что метод write() не принимает именованные аргументы, такие как rotation.
Чтобы устранить ошибку, можно преобразовать в PDF до вызова write(), вот так:
with open(dir_new +".pdf", "wb") as f:
pdf_bytes = img2pdf.convert(glob.glob("*.jpg"), rotation=img2pdf.Rotation.ifvalid)
f.write(pdf_bytes)
Причина ошибки в том, что закрывающая скобка стоит не там:
# Должно быть
f.write(img2pdf.convert(glob.glob("*.jpg"), rotation=img2pdf.Rotation.ifvalid))
# Было
f.write(img2pdf.convert(glob.glob("*.jpg")), rotation=img2pdf.Rotation.ifvalid)
Получается, что вы передаете параметр rotation (поворот) в метод write, а не в метод convert. Метод записи в файл ни о каком повороте не знает, он умеет только записывать байты в файл.
Чтобы не путаться со скобками, лучше разделить операцию на отдельные строки:
pdf_bytes = img2pdf.convert(glob.glob("*.jpg"), rotation=img2pdf.Rotation.ifvalid)
f.write(pdf_bytes)
или даже так:
files = glob.glob("*.jpg")
pdf_bytes = img2pdf.convert(files, rotation=img2pdf.Rotation.ifvalid)
f.write(pdf_bytes)