当前位置:   article > 正文

python编程实例pdf-Python编程快速上手――PDF文件操作案例分析

python实战案例pdf

本文实例讲述了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命令行参数用的字符串直接放入函数进行代替。

#! 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)

运行结果:

pycharm界面运行结果:

2020022811233745.png

2020022811233746.png

- 原文件夹:

2020022811233847.png

- 新文件夹:

2020022811233848.png

- 拷贝文本文件:

2020022811233849.png

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/943819
推荐阅读
相关标签
  

闽ICP备14008679号