Python使用PIL转图片为PDF时如何在报错后继续执行后续代码
解决方案
你可以给每个图片的转换流程套独立的try...except异常捕获块,单个任务抛出的异常会被当场捕获处理,不会终止后续代码运行。
直接修改版(基于原有代码改动最小)
from PIL import Image # 处理1.jpeg try: image1 = Image.open(r'1.jpeg') im1 = image1.convert('RGB') im1.save(r'1.pdf') except Exception as e: # 可自定义报错处理逻辑,这里仅打印错误信息 print(f"处理1.jpeg时出错:{str(e)}") # Part 2 处理2.jpeg try: image1 = Image.open(r'2.jpeg') im1 = image1.convert('RGB') im1.save(r'2.pdf') except Exception as e: print(f"处理2.jpeg时出错:{str(e)}")
优化封装版(适合批量处理多文件)
如果后续要处理更多图片,可把转换逻辑封装成函数,批量传文件路径处理即可:
from PIL import Image def jpg_to_pdf(jpg_path: str, pdf_path: str) -> None: try: image = Image.open(jpg_path) image.convert('RGB').save(pdf_path) print(f"{jpg_path} 转换成功,已保存为 {pdf_path}") except Exception as e: print(f"{jpg_path} 转换失败:{str(e)}") # 调用处理对应文件 jpg_to_pdf(r'1.jpeg', r'1.pdf') jpg_to_pdf(r'2.jpeg', r'2.pdf') # 后续新增文件只需新增一行调用即可,例如: # jpg_to_pdf(r'3.jpeg', r'3.pdf')
说明:上面的
Exception会捕获所有常规运行时错误,包含文件不存在、文件格式错误、权限不足等所有可能导致转换失败的异常,你也可以根据需要缩小捕获的异常类型,比如只捕获FileNotFoundError来专门处理文件不存在的情况。
内容的提问来源于stack exchange,提问作者LiON
相关产品推荐
相关产品推荐

