IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-实现批量文件加密功能 -> 正文阅读

[Python知识库]python-实现批量文件加密功能

一、源码

1、结果展示

??python自动化办公现在可不是一个陌生的词,也随着人们对自己隐私越来越看重,就会出现这样的需求:每人一个PDF文件,因有个人隐私信息,所以需要对文件进行加密且密码为本人身份证后六位。
??废话不多说,上结论,程序运行结果如下:
在这里插入图片描述
??我们去一探究竟,原文件如下:
在这里插入图片描述
??获取密码如下:
在这里插入图片描述
??将文件加密以后结果如下:
在这里插入图片描述
??我们随机打开一个验证一下:
在这里插入图片描述
??输入身份证后六位,作为密码即可打开。

2、源码

??可运行源码如下:

import os
from PyPDF2 import PdfFileWriter, PdfFileReader
import pandas as pd

# 全局工作目录
os.chdir("D:\加密")

def main():
    # 1、找文件
    # 获取实习证明原文件的文件名
    rosterfile = os.listdir('.\原文件\\')
    # 获取信息中表的姓名与密码
    name,Password = getPassword()

    # 对每个文件进行加密并保存
    for prove in rosterfile:
        for Name in name:
            if Name in prove:
                i = name.index(Name)
                rosterLast = prove
                rosterNow = '.\文件加密版本\\' + prove
                password = Password[i]
                # 2、加密文件并输出
                encryptionPDF(rosterLast,rosterNow,password)


# 获取了表中姓名信息,并提取身份证后六位作为密码
def getPassword():
    password = []
    name = []
    # 获取Excel列,包括姓名、身份证号
    Name = pd.read_excel('.\名单.xlsx', usecols=[0],names=None)  # 读取项目名称列,不要列名
    Id = pd.read_excel('.\名单.xlsx', usecols=[1],names=None)  # 读取项目名称列,不要列名
    Name1 = Name.values.tolist()
    id = Id.values.tolist()
    # 提取身份证后六位作为密码
    for i in id:
        password.append(str(i[0])[12:18:1])
    # 提取姓名为字符串,原来为list
    for j in Name1:
        name.append(j[0])
    return name,password

# 加密文件并输出
# 变量说明:rosterLast-原PDF文件路径,rosterNow-加密后输出路径,password-加密密码
def encryptionPDF(rosterLast,rosterNow,password):
    pdf_reader = PdfFileReader(r'.\原文件\\%s'%(rosterLast))  # 输入你想要操作的pdf文档的位置/名称
    pdf_writer = PdfFileWriter()

    for page in range(pdf_reader.getNumPages()):
        pdf_writer.addPage(pdf_reader.getPage(page))

    pdf_writer.encrypt(password)  # 写入密码并输出到目的路径
    with open(rosterNow, 'wb') as out:
        pdf_writer.write(out)
    print("文件:%s----已完成加密,密码为:%s"%(rosterLast,password))

# 函数入口
if __name__ == '__main__':
    print("-----开始加密-----")
    main()
    print("-----加密完成-----")

二、源码注释

1、所使用依赖包

??共使用三个函数:

# 文件操作
import os

# 操作PDF文件
from PyPDF2 import PdfFileWriter, PdfFileReader

# 操作数据
import pandas as pd

??在这里我只是简单说明用这些第三方库干了什么,具体学习可参考官方文档或者菜鸟教程。

2、函数功能

??编码过程中也共定义有三个函数,其功能如下:

# 主函数,从这里我们可以看到我整体是如何实现此需求的
def main():

# 功能函数,用来获取文件密码的,然后使用姓名与文件名做匹配,达到本人文件为本人身份证后六位的需求。
def getPassword():

#  功能函数,本次编码的核心,前面都可以作为准备阶段,就是为本函数用来加密文件而提供读取、输出路径以及密码的。
def encryptionPDF(rosterLast,rosterNow,password):

3、代码拓展

??这只是一个很简单的需求,它并不具有普遍性,它可能仅在我电脑上可以运行,当你拷贝走源码以后可能就没法运行了,会报各种各样的错误。
??如果你想直接用,那可能得按照我在编码过程中准备的数据一模一样的去准备。所以它其实只能用作学习交流,想要直接使用不太现实。
??当然可以尝试着在此基础上增加功能或者增加代码的可用性与门槛。例如:获取用户输入的路径,定义密码模板等,让代码具有普遍性,可直接拷贝运行那种的。

三、可运行环境

??那如果你不想改源码,想直接用那怎么办?
??没问题!那你就跟着我来吧,一点一点来。
??首先在D盘创建一个文件夹名为:加密;注意!必须保证它在根目录下!它的路径为D:\加密。然后打开文件创建如下:必须一模一样
在这里插入图片描述
??差不多了,原文件放在原文件夹里面,运行以后的文件就在加密版本文件夹里面。
??最重要的就是在名单的表格里面把信息填好,这就是用来设置密码的,表格格式如下:身份证号码格式为数字
在这里插入图片描述
??表格只有两列!一列姓名、一列身份证号码。身份证号码为数字类型!
??欢迎关注,点赞。与我交流一同学习python、Django、爬虫、docker、路由交换、web安全等一切东西。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:35:59  更:2021-07-29 11:36:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 17:08:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码