目錄
- 一、源碼
- 二、源碼注釋
- 1、所使用依賴包
- 2、函數(shù)功能
- 3、代碼拓展
- 三、可運行環(huán)境
一、源碼
1、結(jié)果展示
python自動化辦公現(xiàn)在可不是一個陌生的詞,也隨著人們對自己隱私越來越看重,就會出現(xiàn)這樣的需求:每人一個PDF文件,因有個人隱私信息,所以需要對文件進行加密且密碼為本人身份證后六位。
廢話不多說,上結(jié)論,程序運行結(jié)果如下:
我們?nèi)ヒ惶骄烤梗募缦拢?br />
獲取密碼如下:
將文件加密以后結(jié)果如下:
我們隨機打開一個驗證一下:
輸入身份證后六位,作為密碼即可打開。
2、源碼
可運行源碼如下:
import os
from PyPDF2 import PdfFileWriter, PdfFileReader
import pandas as pd
# 全局工作目錄
os.chdir("D:\加密")
def main():
# 1、找文件
# 獲取實習(xí)證明原文件的文件名
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))
# 函數(shù)入口
if __name__ == '__main__':
print("-----開始加密-----")
main()
print("-----加密完成-----")
二、源碼注釋
1、所使用依賴包
共使用三個函數(shù):
# 文件操作
import os
# 操作PDF文件
from PyPDF2 import PdfFileWriter, PdfFileReader
# 操作數(shù)據(jù)
import pandas as pd
在這里我只是簡單說明用這些第三方庫干了什么,具體學(xué)習(xí)可參考官方文檔或者菜鳥教程。
2、函數(shù)功能
編碼過程中也共定義有三個函數(shù),其功能如下:
# 主函數(shù),從這里我們可以看到我整體是如何實現(xiàn)此需求的
def main():
# 功能函數(shù),用來獲取文件密碼的,然后使用姓名與文件名做匹配,達到本人文件為本人身份證后六位的需求。
def getPassword():
# 功能函數(shù),本次編碼的核心,前面都可以作為準(zhǔn)備階段,就是為本函數(shù)用來加密文件而提供讀取、輸出路徑以及密碼的。
def encryptionPDF(rosterLast,rosterNow,password):
3、代碼拓展
這只是一個很簡單的需求,它并不具有普遍性,它可能僅在我電腦上可以運行,當(dāng)你拷貝走源碼以后可能就沒法運行了,會報各種各樣的錯誤。
如果你想直接用,那可能得按照我在編碼過程中準(zhǔn)備的數(shù)據(jù)一模一樣的去準(zhǔn)備。所以它其實只能用作學(xué)習(xí)交流,想要直接使用不太現(xiàn)實。
當(dāng)然可以嘗試著在此基礎(chǔ)上增加功能或者增加代碼的可用性與門檻。例如:獲取用戶輸入的路徑,定義密碼模板等,讓代碼具有普遍性,可直接拷貝運行那種的。
三、可運行環(huán)境
那如果你不想改源碼,想直接用那怎么辦?
沒問題!那你就跟著我來吧,一點一點來。
首先在D盤創(chuàng)建一個文件夾名為:加密;注意!必須保證它在根目錄下!它的路徑為D:\加密。然后打開文件創(chuàng)建如下:必須一模一樣
差不多了,原文件放在原文件夾里面,運行以后的文件就在加密版本文件夾里面。
最重要的就是在名單的表格里面把信息填好,這就是用來設(shè)置密碼的,表格格式如下:身份證號碼格式為數(shù)字
表格只有兩列!一列姓名、一列身份證號碼。身份證號碼為數(shù)字類型!
到此這篇關(guān)于python 實現(xiàn)批量文件加密功能的文章就介紹到這了,更多相關(guān)python 批量文件加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python破解zip加密文件的方法
- 基于python實現(xiàn)文件加密功能
- python暴力解壓rar加密文件過程詳解
- python實現(xiàn)文件快照加密保護的方法
- Python編譯成.so文件進行加密后調(diào)用的實現(xiàn)
- Python 實現(xiàn)加密過的PDF文件轉(zhuǎn)WORD格式
- python中的socket實現(xiàn)ftp客戶端和服務(wù)器收發(fā)文件及md5加密文件