在Python中的范围内写入pdf

问题描述 投票:0回答:1

如何增加此代码列表以在更广泛的范围内工作 对于 200 个文件来说效果很好

File "F:\New folder\Tarek\New folder\Merger2.py", line 14, in merge_pdf
matching_draft = [f for f in second_list if key in f][0]
IndexError: list index out of range 

代码

import os
from PyPDF2 import PdfMerger #pip install PyPDF2


def merge_pdf(first_folder , second_folder ,output_folder):
        # if not os.path.exists(output_folder):
              #  os.mkdir(output_folder)

        first_folder = [f for f in os.listdir(first_folder) if f.endswith('.pdf')]
        second_folder = [f for f in os.listdir(second_folder) if f.endswith('.pdf')]

        for pdf in first_folder :
                key = pdf.split('.')[0]
                print(key)
                matching_draft = [f for f in second_folder if key in f][0]
                merger = PdfMerger()
                merger.append(f"{first_folder}/{pdf}")
                merger.append(f"{second_folder}/{matching_draft}")
                merger.write(f"{output_folder}/merged_file.pdf")
                #merger.write(f'{output_Folder}/{matching_draft}') 
                #print (f'Merged {len(first_folder)} PDFS to {output_folder}')

merge_pdf('first_folder','second_folder','output_folder')

获取与原始文件名相同的输出

python python-3.x list
1个回答
0
投票

在列表理解之后(第 14 行),如果列表为空,代码将尝试访问不存在的索引。

尝试检查

matching_draft
的长度或实施 try/ except:

matching_draft = [f for f in second_folder if key in f]
try:
    matching_draft = matching_draft[0]
except IndexError:
    # empty list
© www.soinside.com 2019 - 2024. All rights reserved.