I made this script for me to convert images to PDF in multiple folders for archiving, yesterday it runs fine doing 245 folders to convert and now today if I try to execute the script in cmd it always go to the next line
import os
from PIL import Image
def convert_images_to_pdf(folder_path, output_pdf):
image_files = [os.path.join(root, file) for root, _, files in os.walk(folder_path)
for file in files if file.lower().endswith(('jpg', 'jpeg', 'png'))]
if not image_files:
print("No image files found in", folder_path)
return
try:
first_image = Image.open(image_files[0])
first_image.save(output_pdf, "PDF", resolution=100.0, save_all=True,
append_images=[Image.open(image_file) for image_file in image_files[1:]])
print("PDF saved to", output_pdf)
except MemoryError:
print("Memory error occurred while processing folder:", folder_path)
log_memory_error(folder_path, "E:/memory_error.log")
def load_processed_folders(log_file):
return set(line.strip() for line in open(log_file, 'r') if os.path.isdir(line.strip()))
def save_processed_folder(log_file, folder_path):
with open(log_file, 'a') as f:
f.write(folder_path + 'n')
def log_memory_error(folder_path, log_file):
with open(log_file, 'a') as f:
f.write(folder_path + 'n')
# Example usage
root_folder = "E:/RESIDENTIAL"
output_folder = "E:/RESIDENTIAL_OUTPUT"
log_file = "E:/processed_folders.log"
memory_error_log_file = "E:/memory_error.log"
processed_folders = load_processed_folders(log_file)
for folder_name in os.listdir(root_folder):
folder_path = os.path.join(root_folder, folder_name)
if os.path.isdir(folder_path) and folder_path not in processed_folders:
output_pdf = os.path.join(output_folder, folder_name + ".pdf")
convert_images_to_pdf(folder_path, output_pdf)
save_processed_folder(log_file, folder_path)
This should be what you see in the cmd and specified folder
P.S I put a box on the file names for privacy
Thank you!
New contributor
Donzskie Just Passing By is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.