У меня есть несколько папок внутри родительской.Каждая папка имеет несколько изображений в формате .jpg с именем в порядке возрастания (00.jpg, 01.jpg ...).
Я хочу преобразовать каждое изображение в pdf с тем же именем, а затем объединить всеPDF-файлы каждой вложенной папки в один PDF-файл, расположенный в родительской папке и названный в качестве вложенной папки, из которой получены ее PDF-файлы.
Например, в папке «Родительская папка ./Random» имеются подкаталоги 001 эскизов ландшафта к 099 городским эскизам.Поэтому я хочу преобразовать изображения в каждой подпапке, а затем объединить PDF-файлы с названиями 001-ландшафтов в городские эскизы 099.
Я в порядке с преобразованием изображений в PDF-файлы, но я не могу объединить их, используя цикл, дажехотя, когда я попробовал один и тот же код в одной подпапке, он работал (поэтому без необходимости циклически проходить по разным папкам).
У меня возникают проблемы с пониманием того, как работает os.walk (), поэтому я используюos.listdir () вместо.
Это мой текущий рабочий код:
import os
import shutil
import img2pdf
from send2trash import send2trash
import re
from PyPDF2 import PdfFileMerger as merger
parent_folder = '/Users/macbook/Documents/Random sketches/'
os.chdir(parent_folder)
for subfolder in os.listdir(parent_folder):
if os.path.isdir(parent_folder + subfolder):
for filename in os.listdir(parent_folder + subfolder):
if filename.endswith(('.jpg', '.JPG')):
filename_regex = re.compile(r'(\.jpg)|(\.jpeg)', re.IGNORECASE)
new_name = filename_regex.sub('', filename)
f = open(parent_folder + subfolder + '/' + new_name + '.pdf', 'wb')
f.write(img2pdf.convert(parent_folder + subfolder + '/' + filename))
send2trash(parent_folder + subfolder + '/' + filename)
for subfolder in os.listdir(parent_folder):
if os.path.isdir(parent_folder + subfolder):
for file in os.listdir(parent_folder + subfolder):
if file.endswith('.pdf'):
merger.append(file)
merger.write(subfolder +'.pdf')
Однако я получаю сообщение об ошибке:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-c489b353ceda> in <module>()
23 if file.endswith('.pdf'):
24 merger.append(file)
---> 25 merger.write(subfolder +'.pdf')
TypeError: write() missing 1 required positional argument: 'fileobj'