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 實現批量文件加密功能的文章就介紹到這瞭,更多相關python 批量文件加密內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python對PDF文件的常用操作方法詳解
- 基於Python實現文本文件轉Excel
- Python數據讀寫之Python讀寫CSV文件
- python的PyPDF2實現pdf文件切割和合並
- 在python中創建表格的兩種方法實例