《Python编程快速上手》实践项目:将多个pdf文件内容合并为一个pdf,并去除首页

1.项目要求

假如你手里有好几个pdf文档,无聊的你想要将这些文档的内容合并在一起,生成一个新的文档内容。但是要求你去除每一个Pdf文件的首页内容。虽然你可以下载一个处理pdf文件的软件来帮你操作,但是你自认编程能力强,要自己动手完成这一项事情~

2.编程思路

 

  1. 筛选出文件夹中所有的Pdf文件,将文件名保存至一个列表中。
  2. 循环打开每一个文件,创建pdf对象。
  3. 读取每一个文档除第一页的所有内容,追加到一个新的文档中。
  4. 将新的pdf文件保存至硬盘。

3.代码演示

import os,PyPDF2

#找出所有的pdf文件,并将文件名保存至列表。
filelist = []
for filename in os.listdir('./pdf'):
	if filename.endswith('.pdf'):
		filelist.append(filename)

#创建一个新的pdf
newPdfFile = PyPDF2.PdfFileWriter()

#循环打开每一个pdf文件,将内容添加至新的pdf
for filename in filelist:
	pdfFile = open('./pdf/'+filename,'rb')
	pdfObj = PyPDF2.PdfFileReader(pdfFile)
	#获取页数
	pageNum =pdfObj.numPages

	for num in range(1,pageNum):
		pageContent = pdfObj.getPage(num)
		newPdfFile.addPage(pageContent)
	# pdfFile.close()
	
newFile = open('combline.pdf','wb')
newPdfFile.write(newFile)
newFile.close()

4.未解疑点

 

在第22行,我写了一行代码:pdfFile.close(),意为将每个循环打开的文件进行关闭操作,但是运行之后,奇怪的事情发生了。新生成的pdf文档竟然是空的。出现这个现象,可以肯定我的语法没有任何问题,出问题的是我的编码逻辑,逻辑出错才是最致命也是最难以发现的。

我将pdfFile.close()注释之后竟然能够正常运行。这我就有点困惑了,难道我的关闭文件的操作是错误的?为和会出现错误呢?难道打的文件不关闭,留着占用内存吗?

当然,我也可以在文档的最后用循环去关闭每一个文件,但是我不明白在打开文件的那个循环之后去关闭文件何错之有?

如果你能看到这篇文章,如果你明白我是怎么错了,麻烦再留言区告知我,感谢~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值