• 售前

  • 售后

热门帖子
入门百科

python 实现批量文件加密功能

[复制链接]
啤酒瓶空了缓 显示全部楼层 发表于 2021-8-14 09:09:46 |阅读模式 打印 上一主题 下一主题
目次


  • 一、源码

    • 1、效果展示
    • 2、源码

  • 二、源码注释

    • 1、所利用依靠包
    • 2、函数功能
    • 3、代码拓展

  • 三、可运行环境

一、源码


1、效果展示

  python自动化办公现在可不是一个生疏的词,也随着人们对自己隐私越来越看重,就会出现这样的需求:每人一个PDF文件,因有个人隐私信息,以是必要对文件举行加密且密码为本人身份证后六位。
  废话不多说,上结论,步调运行效果如下:



  我们去一探毕竟,原文件如下:


 获取密码如下:



  将文件加密以后效果如下:



  我们随机打开一个验证一下:



  输入身份证后六位,作为密码即可打开。


2、源码

  可运行源码如下:
  1. import os
  2. from PyPDF2 import PdfFileWriter, PdfFileReader
  3. import pandas as pd
  4. # 全局工作目录
  5. os.chdir("D:\加密")
  6. def main():
  7.     # 1、找文件
  8.     # 获取实习证明原文件的文件名
  9.     rosterfile = os.listdir('.\原文件\\')
  10.     # 获取信息中表的姓名与密码
  11.     name,Password = getPassword()
  12.     # 对每个文件进行加密并保存
  13.     for prove in rosterfile:
  14.         for Name in name:
  15.             if Name in prove:
  16.                 i = name.index(Name)
  17.                 rosterLast = prove
  18.                 rosterNow = '.\文件加密版本\\' + prove
  19.                 password = Password[i]
  20.                 # 2、加密文件并输出
  21.                 encryptionPDF(rosterLast,rosterNow,password)
  22. # 获取了表中姓名信息,并提取身份证后六位作为密码
  23. def getPassword():
  24.     password = []
  25.     name = []
  26.     # 获取Excel列,包括姓名、身份证号
  27.     Name = pd.read_excel('.\名单.xlsx', usecols=[0],names=None)  # 读取项目名称列,不要列名
  28.     Id = pd.read_excel('.\名单.xlsx', usecols=[1],names=None)  # 读取项目名称列,不要列名
  29.     Name1 = Name.values.tolist()
  30.     id = Id.values.tolist()
  31.     # 提取身份证后六位作为密码
  32.     for i in id:
  33.         password.append(str(i[0])[12:18:1])
  34.     # 提取姓名为字符串,原来为list
  35.     for j in Name1:
  36.         name.append(j[0])
  37.     return name,password
  38. # 加密文件并输出
  39. # 变量说明:rosterLast-原PDF文件路径,rosterNow-加密后输出路径,password-加密密码
  40. def encryptionPDF(rosterLast,rosterNow,password):
  41.     pdf_reader = PdfFileReader(r'.\原文件\\%s'%(rosterLast))  # 输入你想要操作的pdf文档的位置/名称
  42.     pdf_writer = PdfFileWriter()
  43.     for page in range(pdf_reader.getNumPages()):
  44.         pdf_writer.addPage(pdf_reader.getPage(page))
  45.     pdf_writer.encrypt(password)  # 写入密码并输出到目的路径
  46.     with open(rosterNow, 'wb') as out:
  47.         pdf_writer.write(out)
  48.     print("文件:%s----已完成加密,密码为:%s"%(rosterLast,password))
  49. # 函数入口
  50. if __name__ == '__main__':
  51.     print("-----开始加密-----")
  52.     main()
  53.     print("-----加密完成-----")
复制代码
二、源码注释


1、所利用依靠包

  共利用三个函数:
  1. # 文件操作
  2. import os
  3. # 操作PDF文件
  4. from PyPDF2 import PdfFileWriter, PdfFileReader
  5. # 操作数据
  6. import pandas as pd
复制代码
  在这里我只是简单说明用这些第三方库干了什么,详细学习可参考官方文档或者菜鸟教程。

2、函数功能

  编码过程中也共定义有三个函数,其功能如下:
  1. # 主函数,从这里我们可以看到我整体是如何实现此需求的
  2. def main():
  3. # 功能函数,用来获取文件密码的,然后使用姓名与文件名做匹配,达到本人文件为本人身份证后六位的需求。
  4. def getPassword():
  5. #  功能函数,本次编码的核心,前面都可以作为准备阶段,就是为本函数用来加密文件而提供读取、输出路径以及密码的。
  6. def encryptionPDF(rosterLast,rosterNow,password):
复制代码
3、代码拓展

  这只是一个很简单的需求,它并不具有广泛性,它大概仅在我电脑上可以运行,当你拷贝走源码以后大概就没法运行了,会报各种各样的错误。
  假如你想直接用,那大概得按照我在编码过程中预备的数据千篇一律的去预备。以是它其实只能用作学习交换,想要直接利用不太现实。
  固然可以实验着在此底子上增长功能或者增长代码的可用性与门槛。例如:获取用户输入的路径,定义密码模板等,让代码具有广泛性,可直接拷贝运行那种的。

三、可运行环境

  那假如你不想改源码,想直接用那怎么办?
  没题目!那你就跟着我来吧,一点一点来。
  起首在D盘创建一个文件夹名为:加密;注意!必须包管它在根目次下!它的路径为D:\加密。然后打开文件创建如下:必须千篇一律



  差不多了,原文件放在原文件夹内里,运行以后的文件就在加密版本文件夹内里。
  最紧张的就是在名单的表格内里把信息填好,这就是用来设置密码的,表格格式如下:身份证号码格式为数字



  表格只有两列!一列姓名、一列身份证号码。身份证号码为数字范例!

到此这篇关于python 实现批量文件加密功能的文章就先容到这了,更多相关python 批量文件加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章盼望大家以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作