Думаю, вам стоит попробовать библиотеку glob
, она уже имеет дело с полными путями. Поскольку разделение PDF-файлов является повторяющейся задачей, я создал функцию с именем splitPDF
, которая открывает file_name
и разбивает PDF-файл. Пожалуйста, проверьте это решение:
##Split each page of PDF
#import required modules
import os
from glob import glob
from PyPDF2 import PdfFileWriter, PdfFileReader
# Functions
def splitPDF(file_name,output_dir=None):
inputpdf = PdfFileReader(open(file_name , "rb"))
num_pages = inputpdf.numPages
#loop through all pages
for i in range(num_pages):
output = PdfFileWriter()
output.addPage(inputpdf.getPage(i))
# with open(f"document-page{i+1}.pdf", 'wb') as outputStream:
output_name = f"{os.path.basename(file_name.replace('.pdf',''))}{i+1}.pdf"
if output_dir is None:
output_name = os.path.join(output_dir, output_name)
with open(output_name,'wb') as outputStream:
output.write(outputStream)
print(f"PDF: {file_name} has been splitted")
# Loop over all the files in base_dir
base_dir = "<the directory where you want to find pdfs>"
output_dir = "<the directory where you want to store your splitted pdfs>"
pdfs = os.path.join(base_dir,"*.pdf")
files = glob(pdfs)
# Split each file found in base_dir
for file in files:
splitPDF(file,output_dir)
# splitPDF(file) use this to place the files on the same dir.
Кроме того, я изменил output_name
, чтобы он мог совпадать с именем исходного файла, если необходимо.
Изменить:
Я добавил переменную output_dir
, чтобы вы могли помещать свои файлы в другую папку. По умолчанию значение output_dir = None
, поэтому, если вы не проанализируете это значение для функции, она поместит файл в тот же каталог, что и base_dir
.
Пожалуйста, дайте мне знать, помогло ли это! : D