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

Iterate over non consecutive files and how avoid exit the program 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():