本文实例讲述了Python PDF文件操作。分享给大家供大家参考,具体如下:
- 程序内函数1需要做以下事情:
找出文件夹中所有PDF文件
对PDF文件进行加密
保存加密的PDF文件
检验是否正确加密
删除源文件
- 程序内函数2需要做以下事情:
遍历文件夹中所有带_encrypted后缀的PDF文件
利用提供的口令进行打开
能够正确打开,则进行口令拷贝保存到txt文件
不能正确打开输出到屏幕
- 代码需要做以下事情:
导入os,PyPDF2,sys,send2trash
生成新文件夹用于保存加密PDF及拷贝文本
#! python3 import os, sys, PyPDF2,send2trash os.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)
更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
本文向大家介绍Python编程快速上手——选择性拷贝操作案例分析,包括了Python编程快速上手——选择性拷贝操作案例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python选择性拷贝操作。分享给大家供大家参考,具体如下: 问题如下: 编写一个程序,遍历一个目录树,查找特的那个拓展名的文件(如,.jpg或.pdf)。不论这些文件位置在哪里,将它们拷贝到一个新的文件夹中 思路如下:
本文向大家介绍Python编程快速上手——强口令检测算法案例分析,包括了Python编程快速上手——强口令检测算法案例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python强口令检测算法。分享给大家供大家参考,具体如下: 题目如下: 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令定义:长度不少于8个字符,同时包含大写和小写字符,至少含有一个数字。可能需要多个正
本文向大家介绍Python编程快速上手——Excel表格创建乘法表案例分析,包括了Python编程快速上手——Excel表格创建乘法表案例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python Excel表格创建乘法表。分享给大家供大家参考,具体如下: 题目如下: 创建程序multiplicationTable.py,从命令行接受数字N,在一个Excel电子表格中创建一个N*N的
本文向大家介绍Python编程快速上手——正则表达式查找功能案例分析,包括了Python编程快速上手——正则表达式查找功能案例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python正则表达式查找功能。分享给大家供大家参考,具体如下: 题目如下: 编写一个程序,打开文件夹中所有的.txt文件,查找匹配用户提供的正则表达式的所有行。结果应该打印到屏幕上。 思路如下: 程序需要做的事情
6.4.3 编程案例:文本文件分析 本节讨论一个文件分析程序,其功能是输入一个文本文件,对文件内容进行分词(将字符流划分为单词),然后统计文件中的字符数、单词数、每个单词的出现次数以及行数,最 后输出统计结果。按出现频率前 n 名的单词。这种分析在很多应用中都会用到,例如自然语 言处理、文档相似性比较、搜索引擎等。 分析程序的算法设计是直接了当的,其核心是对多个指标进行累积计数。其中,对字符 数和
本文向大家介绍Python编程快速上手——疯狂填词程序实现方法分析,包括了Python编程快速上手——疯狂填词程序实现方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python疯狂填词程序实现方法。分享给大家供大家参考,具体如下: 题目如下: 创建一个疯狂填词程序,它将读入文件,并让用户在该文本文件中出现ADJECTIVE,NOUN,ADVERB,VERB等单词的地方,加上它们自