写入多个文件而自动递增文件名失败(python 3.6)

wrting more than one file while autoincrementing file name failed (python 3.6)

我正在使用 PyPDF2 裁剪目录中的 PDF 文件。其中有 2 个。我的目标是裁剪这两个文件并将新裁剪的文件另存为 "article_0.pdf" 和 "article_1.pdf":

from PyPDF2 import PdfFileReader, PdfFileWriter
import os
directory=os.getcwd()
for file in os.listdir(directory):
    reader = PdfFileReader(file,'r')
writer = PdfFileWriter()
for i in range(reader.getNumPages()):
     page = reader.getPage(i)
     page.cropBox.setUpperLeft((0,720))
     page.cropBox.setLowerLeft((0,70))
     page.cropBox.setLowerRight((612,70))
     page.cropBox.setUpperRight((612,720))
     writer.addPage(page)
for index in range(2):
     filename = 'article_%d.pdf'%index
     with open(filename,'wb') as f:
         writer.write(f)

裁剪正确完成,输出文件按预期命名为 "article_0.pdf" 和 "article_1.pdf"。但是,两个输出文件都只是其中一个原始文件的裁剪版本。为什么其他文件的裁剪版本不在输出文件中?谢谢!

更新:我尝试像这样修复缩进,但仍然得到相同的结果:

from PyPDF2 import PdfFileReader, PdfFileWriter
import os
directory=os.getcwd()
for file in os.listdir(directory):
    reader = PdfFileReader(file,'r')
    writer = PdfFileWriter()
    for i in range(reader.getNumPages()):
        page = reader.getPage(i)
        page.cropBox.setUpperLeft((0,720))
        page.cropBox.setLowerLeft((0,70))
        page.cropBox.setLowerRight((612,70))
        page.cropBox.setUpperRight((612,720))
        writer.addPage(page)
    for index in range(2):
        filename = 'article_%d.pdf'%index
        with open(filename,'wb') as f:
             writer.write(f)

您用来编写两个文件的循环没有做任何有用的事情。它总是写入两个内容相同的文件,因为writer的内容在循环期间不会改变。

相反,您应该在第一个循环的每次迭代中编写一次。要获取索引,请在调用 os.listdir:

时使用 enumerate 获取索引以及文件名
for index, file in enumerate(os.listdir(directory)): # compute index up here with enumerate
    reader = PdfFileReader(file,'r')
    writer = PdfFileWriter()
    for i in range(reader.getNumPages()):
        ...
    filename = 'article_%d.pdf' % index              # no extra loop is needed down here
    with open(filename,'wb') as f:
         writer.write(f)