写入多个文件而自动递增文件名失败(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)
我正在使用 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)