如何在没有附加先前输入的情况下合并和关闭 PyPDF
How to merge and close a PyPDF without previous inputs being attached
我在合并多个 pdf 时遇到问题,因为我必须在文件夹之间循环并合并匹配的两个文件。
这很容易完成,但是当我:
input1.append(file1)
input2.append(file2)
PDFFileMerger.write(output)
发生了合并,但下一次迭代包括了之前的输入等等,使最后一个成为一个巨大的 pdf 文件,因为这些事件相互重复
for i in range(nPdfs):
abr = onlypdf[i]
abr = abr.replace('.pdf', '')
for j in range(nXl):
pdf_file = open('SEPTIEMBRE DE 2020/' + onlyfiles[j], 'rb')
read_pdf = pdf.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
if abr in page_content:
file1 = onlypdf[i]
file2 = onlyfiles[j]
print(file1)
print(file2)
print(file1+' esta en '+file2)
input1 = open('Combinadora/documentos/'+file1, 'rb')
input2 = open('SEPTIEMBRE DE 2020/'+file2, 'rb')
merger.append(input1)
merger.append(input2)
input1.close()
input2.close()
print('archivo creado')
output = open(abr+'-'+file2, 'wb')
merger.write(output)
output.close()
这是我的代码,我在循环中搞砸了吗?
PyPDF 是一个很棒的库,但我在内存方面也遇到了一些问题。所以通常我使用单独的进程创建合并(在工作后被杀死)或者你可以删除(删除)实际对象。请记住,即使您找到了克服此问题的棘手方法,也可能会发生内存泄漏,因此我强烈建议创建和终止进程。
我在合并多个 pdf 时遇到问题,因为我必须在文件夹之间循环并合并匹配的两个文件。 这很容易完成,但是当我:
input1.append(file1)
input2.append(file2)
PDFFileMerger.write(output)
发生了合并,但下一次迭代包括了之前的输入等等,使最后一个成为一个巨大的 pdf 文件,因为这些事件相互重复
for i in range(nPdfs):
abr = onlypdf[i]
abr = abr.replace('.pdf', '')
for j in range(nXl):
pdf_file = open('SEPTIEMBRE DE 2020/' + onlyfiles[j], 'rb')
read_pdf = pdf.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
if abr in page_content:
file1 = onlypdf[i]
file2 = onlyfiles[j]
print(file1)
print(file2)
print(file1+' esta en '+file2)
input1 = open('Combinadora/documentos/'+file1, 'rb')
input2 = open('SEPTIEMBRE DE 2020/'+file2, 'rb')
merger.append(input1)
merger.append(input2)
input1.close()
input2.close()
print('archivo creado')
output = open(abr+'-'+file2, 'wb')
merger.write(output)
output.close()
这是我的代码,我在循环中搞砸了吗?
PyPDF 是一个很棒的库,但我在内存方面也遇到了一些问题。所以通常我使用单独的进程创建合并(在工作后被杀死)或者你可以删除(删除)实际对象。请记住,即使您找到了克服此问题的棘手方法,也可能会发生内存泄漏,因此我强烈建议创建和终止进程。