您的位置:首页技术文章
文章详情页

Python编程快速上手——PDF文件操作案例分析

【字号: 日期:2022-08-05 13:14:29浏览:6作者:猪猪

本文实例讲述了Python PDF文件操作。分享给大家供大家参考,具体如下:

题目如下: 利用第九章的os.walk()函数编写脚本,遍历文件夹中的所有pdf,用命令行提供的命令对这些PDF进行加密,用原来的文件名加上_encrypted.pdf后缀,保存每个加密的PDF。在删除原来的文件之前,尝试用程序读取并解密该文件,确保被正确加密 然后编写一个程序,找到文件夹中所有加密的PDF文件,利用提供的口令,创建pdf的解密拷贝,如果口令不对,程序应该打印一条消息, 并继续处理下一个pdf文件思路如下:

- 程序内函数1需要做以下事情:找出文件夹中所有PDF文件对PDF文件进行加密保存加密的PDF文件检验是否正确加密删除源文件- 程序内函数2需要做以下事情:遍历文件夹中所有带_encrypted后缀的PDF文件利用提供的口令进行打开能够正确打开,则进行口令拷贝保存到txt文件不能正确打开输出到屏幕- 代码需要做以下事情:导入os,PyPDF2,sys,send2trash生成新文件夹用于保存加密PDF及拷贝文本

编写一个加密函数 函数内调用os.walk()遍历文件夹,文件名保存到列表 命令行参数sys.argv()提供加密口令 for循环进行文件加密和保存加密文件操作 decrypt进行解密,确保正确加密,并进行反馈 删除原有文件(send2trash) 编写一个生成解密拷贝函数 os.walk()遍历,decrypt进行解密,反馈结果,生成密码拷贝txt try-except进行decrypt控制,解密失败打印消息,continue继续代码如下:由于我的代码在命令行运行时提示找不到PyPDF2模块,所以sys.argv命令行参数用的字符串直接放入函数进行代替。

#! python3import os, sys, PyPDF2,send2trashos.makedirs('.NewPDF')print('文件夹创建成功!')path1 = os.path.abspath('.NewPDF')# 文件加密函数def decryptFile(argv,p = os.path.abspath('.New')): tagFloder = ’.PDF’ pdfList = [] #当前目录下创建新文件夹 #os.makedirs('.NewPDF') #遍历目标文件夹,将.pdf文件名添加到列表 for foldername, subfolders, filenames in os.walk(tagFloder): for filename in filenames: if filename.endswith(’.pdf’): pdfList.append(filename) print(’找到PDF文件:%s’ %filename) else: continue #对pdf文件进行加密) for i in pdfList: pdfFile = open(os.path.join(foldername,filename),’rb’) pdfReader = PyPDF2.PdfFileReader(pdfFile) pdfWriter = PyPDF2.PdfFileWriter() #拷贝 for pageNum in range(pdfReader.numPages): pdfWriter.addPage(pdfReader.getPage(pageNum)) newName = i[0:-4] #对文件名进行分割 pdfWriter.encrypt(argv) #口令加密 pdfResult = open('{0}{1}_encrypted.pdf'.format(p,newName),'wb+') #创建新文件名对象 pdfWriter.write(pdfResult) #写入新文件 pdfReader2 = PyPDF2.PdfFileReader(pdfResult,’rb’) #进行加密确认 if pdfReader2.decrypt(argv): print('正确加密!删除原文件中...') try: send2trash.send2trash(os.path.join(foldername,i)) except: print('删除原文件:%s 失败!'%i) pdfResult.close() print('Done!')# 口令拷贝函数def copyDcrypt(argv,p = os.path.abspath('.New')): pdfList = [] for foldername, subfolders, filenames in os.walk('.'): print('父文件夹:%s'%foldername) for filename in filenames: if filename.endswith('.pdf'): pdfReader = PyPDF2.PdfFileReader(open(os.path.join(foldername,filename),’rb’)) if pdfReader.isEncrypted: pdfList.append(filename) print(’找到已加密PDF文件:%s’ % filename) else: continue for i in pdfList: newName = i[0:-4] #对文件名进行分割 try: if pdfReader.decrypt(argv) == 1: copyFile = open('{0}{1}_PASSWORD.txt' .format(p,newName), ’w’) copyFile.write('Password is : %s' % argv) copyFile.close() print('口令正确!拷贝生成成功!') else: print('口令错误!') except: continue# 调用函数decryptFile('ABCDEFG',path1) copyDcrypt('ABCDEFG',path1)运行结果: pycharm界面运行结果: Python编程快速上手——PDF文件操作案例分析 Python编程快速上手——PDF文件操作案例分析 - 原文件夹: Python编程快速上手——PDF文件操作案例分析 - 新文件夹: Python编程快速上手——PDF文件操作案例分析 - 拷贝文本文件: Python编程快速上手——PDF文件操作案例分析

更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

标签: Python 编程
相关文章: