У меня есть папка (называемая «папка данных»), которая содержит вложенные папки (местоположения), в каждой из которых есть несколько файлов PDF. Теперь для каждой подпапки я хочу сделать 2 вещи:
- 1) Я хочу сохранить только первую страницу каждого pdf
- 2) Следовательно, я хочу объединить все эти первые страницы в 1 pdf под названием "merged.pdf".
Поэтому я написал следующий сценарий:
datafolder = r'C:\Users\xxx\folder'
import os
import sys
from PyPDF2 import PdfFileMerger, PdfFileWriter, PdfFileReader
output = PdfFileWriter()
merger = PdfFileMerger()
subdirectory = []
for subdir, dirs, files in os.walk(datafolder):
for sub_dir in dirs:
subdir_to_open = datafolder + "\\" + sub_dir
subdirectory.append(subdir_to_open) # Save path name of each subfolder
for j in range(len(subdirectory)): # for each subfolder
subdir_open = str(subdirectory[j]) # Make string to open subfolder
for pdf in os.listdir(subdir_open): # For each report in subdirectory...
infile = PdfFileReader((pdf), 'rb')
p = infile.getPage(0) # Keep the first page, remove the last empty page
output.addPage(p)
print(j,pdf) # Print subdirectory and pdf file to check
with open(subdir_open+'\\'+'merged.pdf', 'wb') as f:
output.write(f)
f.close()
печатая j, pdf, проверяю, все ли в порядке: возвращается:
1 C:\Users\xxx\folder\Location1\pdf01.pdf
1 C:\Users\xxx\folder\Location1\pdf02.pdf
2 C:\Users\xxx\folder\Location2\01.pdf
2 C:\Users\xxx\folder\Location2\02.pdf
3 C:\Users\xxx\folder\Location3\01.pdf
3 C:\Users\xxx\folder\Location3\02.pdf
3 C:\Users\xxx\folder\Location3\03.pdf
что означает, что он действительно, кажется, выбирает правильные PDF-файлы в моей секунде для l oop. Однако файл merged.pdf, созданный в каждой подпапке, также содержит файлы PDF из других мест. Так, например, в папке C: \ Users \ xxx \ folder \ Location2 файл "merged.pdf" содержит первые страницы pdf01 и pdf02 местоположения 1. Почему-то кажется, что
p = infile.getPage(0)
добавляет новую страницу для всех pdf-файлов, независимо от того, в какой подкаталоге я нахожусь. Но я хотел бы обновлять sh ее каждый раз, когда go добавляю новую подпапку. Есть какой-либо способ сделать это? Или в моем скрипте может быть другая проблема?