迭代非连续文件以及如何避免退出程序python

问题描述

我正在学习 python,我想迭代很多枚举中没有连续的文件。比如我需要合并的文件名:

dp_1.pdf  I need it to merge with support_dp_1.pdf
dp_3.pdf - - - - - - - - - - - -  support_dp_3.pdf
ip_1.pdf - - - - - - - - - - - -  support_ip_1.pdf
ip_2.pdf - - - - - - - - - - - -  support_ip_2.pdf
ip_3.pdf - - - - - - - - - - - -  support_ip_3.pdf
ep_4.pdf - - - - - - - - - - - -  support_ep_4.pdf

我的脚本是这样的:

from PyPDF2 import PdfFileMerger

files = ['dp_','ep_','ip_']
number = 1
while number <= 4:
        for f in files:
                pdfs = [f + str(number) + ".pdf","support_" + f + str(number) + ".pdf"]
                name_file_output = "output_" + f + str(number) + ".pdf"
                fusion = PdfFileMerger()

                for pdf in pdfs:
                    fusion.append(open(pdf,'rb'))

                with open(name_file_output,'wb') as output:
                    fusion.write(output)

        number += 1

我有这个错误

FileNotFoundError: [Errno 2] No such file or directory: 'dp_2.pdf'

然后程序退出。如何在不退出的情况下进行迭代并继续循环中的下一个文件

解决方法

您可以在尝试合并之前使用 os.path.exists 函数检查文件是否存在:

from PyPDF2 import PdfFileMerger
import os

files = ['dp_','ep_','ip_']
number = 1
while number <= 4:
    for f in files:
        pdfs = [f + str(number) + ".pdf","support_" + f + str(number) + ".pdf"]
        name_file_output = "output_" + f + str(number) + ".pdf"
        fusion = PdfFileMerger()
        
        if not any(os.path.exists(pdf) for pdf in pdfs):
            continue
        
        for pdf in pdfs:
            fusion.append(open(pdf,'rb'))

        with open(name_file_output,'wb') as output:
            fusion.write(output)

    number += 1
,

尝试将其添加到您的脚本中

import pathlib

file = pathlib.Path("<filename>")
if file.exists():