jpg+png to PDF [fpdf]

Есть код, который ходит по директории по папкам. Там собирает png и jpg и поднимаясь на каталог выше оставляет собранный pdf от каждой папки. Проблема появилась при заходе в одну из папок. Такое ощущение, что некорректность обработки идет из-за "_" в наименовании файла.


from os import listdir
from os.path import isfile, join
# перебор 700 директорий и сохранение в них же
from fpdf import FPDF
import os

rootdir = 'C:/Users/avgal/Downloads/Naruto_Manga/Манга Наруто'
for it in os.scandir(rootdir):
    if it.is_dir():
        print(it.path)
        mypath = it.path
        onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f)) and f.endswith('.jpg') or f.endswith('.png') or f.endswith('.jpeg') ]
        print(onlyfiles)
        pdf = FPDF()
        # imagelist is the list with all image filenames
        for image in onlyfiles:
            pdf.add_page()
            pdf.image(name=it.path + "/" + str(image), x=5, y=5, w=200, h=270)
        pdf.output(it.path + "-naruto.pdf", "F")

Скрин ошибки приложил введите сюда описание изображения

Upd:

Попробовал переименовать файлы, исключив подчеркивание. Не помогло. Более того, решил сделать конструкцию try, except. Оказалось, что в дальнейшем код утверждает что png это не png. Но тип файла при этом png. И передает он в функцию его корректно.


Ответы (2 шт):

Автор решения: KerD

Проблема, вероятно, связана с символом подчеркивания в наименовании файла. Ваш код пытается использовать имя файла как часть пути, но символ подчеркивания может вызвать проблемы, так как в Python и многих других языках программирования символ подчеркивания считается специальным символом.

Для решения этой проблемы вам следует обработать имена файлов, чтобы символ подчеркивания не вызывал конфликтов. Вы можете сделать это, например, заменив символ подчеркивания на другой символ (например, дефис) в именах файлов, прежде чем использовать их в пути к изображениям.

→ Ссылка
Автор решения: Эникейщик

Тип файла и тип его содержимого - это разные вещи, не всегда совпадающие. И судя по ошибке там png какого-то другого формата, которые не знакомы библиотеке. Или просто дефектные. К имени файла ошибка вообще никак не относится.

→ Ссылка