文件夹下全是案卷的扫描的PDF扫描件,现在要根据扫描的PDF页数向第三方服务公司支付扫描费用,但是怎么计算文件夹下的pdf文件总页数呢?总不能一个个打开看页码数吧。
百度了以下,万能的PYTHON果然有一个PYPDF2的库,顺利搞定
实现功能,对当前文件夹的PDF文件进行遍历,并统计问价总页数。
知识点1:如何对当前文件夹进行遍历
知识点2:如何用PYPDF2统计文件页数
一、安装库pip install PyPDF2二、代码
import os
import time
from PyPDF2 import PdfFileReader
def folder_pdf_files(): #遍历一个文件夹里的pdf文件
file_list = []
path = r"."
for a, b, c in os.walk(path):
#print(b)
for filename in c:
if filename[-4:].lower() == '.pdf':
# print(filename)
file_path = os.path.join(a, filename)
file_list.append(file_path)
print(f"在当前路径下{len(file_list)} 有个pdf文件")
return file_list
def get_num_pages(pdf):
page_num = 0
reader = PdfFileReader(pdf,strict=False)
if reader.isEncrypted:
return 0
else:
page_num = len(reader.pages)
return page_num
if __name__ == '__main__':
nums = 0
i = folder_pdf_files()
for pdf in i:
print(pdf)
nums = nums +get_num_pages(pdf)
print(f"该文件夹内pdf文件共有{nums}页")
time.sleep(10)
三、生成exe
(一)安装
pip install pyinstaller
(二)生成
pyinstaller -F x:\xxxxxx.py # x:\xxxxxx.py 是代码存储地址
最后,本着懒人推动科技进本的原则,对这段代码生成了exe文件,供大家交流学习。
链接:https://pan.baidu.com/s/160L9-1vV3xRD7BSv9vFyWg?pwd=4444
提取码:4444
1.网上可以找到的代码,使用的都是PyPDF2库,
reader = PdfFileReader(pdf) num_page = reader.getNumPages()
reader.getNumPages()方法,但在阅读PyPDF2库文档后,该方法虽然能够正常使用,但是已经弃用。
“
getNumPages ( ) → int[资源]
1.28.0 版后已弃用:改为使用len(reader.pages)
”
我使用了推荐的len(reader.pages)方法来统计页数
2.在统计过程中,我发现我有一个文件夹名字为“pdf”,统计时出现异常
分析代码
if filename[-3:].lower() == 'pdf':
ilename[-3:].lower() == 'pdf' 这句错了
修改了一下
if filename[-4:].lower() == '.pdf':
虽然如果出现“.pdf”这样的文件夹,程序仍然会报错,但是我想正常人一般不会给文件夹起这样的名字,所以也就不再修改了。
五、待完善1.在实际使用中发现,需要统计的文件数量太大40w+,且硬盘不是固态硬盘,读写速度非常慢,统计时间太长,如果使用多进程、线程是否可以提高速度?
2.统计界面不友好,DOS界面,结果只保存10s,容易错过,应当改写消息弹窗,更为友好。
如果代码对您的工作给予了帮助,节省了您的时间,还请老板打个赏,让我再这炎炎夏日里能买杯蜜雪冰城喝喝。



