溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

python怎么實(shí)現(xiàn)批量文件加密功能

發(fā)布時(shí)間:2021-07-29 13:38:07 來(lái)源:億速云 閱讀:324 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“python怎么實(shí)現(xiàn)批量文件加密功能”,在日常操作中,相信很多人在python怎么實(shí)現(xiàn)批量文件加密功能問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python怎么實(shí)現(xiàn)批量文件加密功能”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

目錄
  • 一、源碼

    • 1、結(jié)果展示

    • 2、源碼

  • 二、源碼注釋

    • 1、所使用依賴(lài)包

    • 2、函數(shù)功能

    • 3、代碼拓展

  • 三、可運(yùn)行環(huán)境

    一、源碼

    1、結(jié)果展示

    ??python自動(dòng)化辦公現(xiàn)在可不是一個(gè)陌生的詞,也隨著人們對(duì)自己隱私越來(lái)越看重,就會(huì)出現(xiàn)這樣的需求:每人一個(gè)PDF文件,因有個(gè)人隱私信息,所以需要對(duì)文件進(jìn)行加密且密碼為本人身份證后六位。
    ??廢話(huà)不多說(shuō),上結(jié)論,程序運(yùn)行結(jié)果如下:

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??我們?nèi)ヒ惶骄烤?,原文件如下?br/>

    python怎么實(shí)現(xiàn)批量文件加密功能?

    ?獲取密碼如下:

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??將文件加密以后結(jié)果如下:

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??我們隨機(jī)打開(kāi)一個(gè)驗(yàn)證一下:

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??輸入身份證后六位,作為密碼即可打開(kāi)。

    2、源碼

    ??可運(yùn)行源碼如下:

    import os
    from PyPDF2 import PdfFileWriter, PdfFileReader
    import pandas as pd
    
    # 全局工作目錄
    os.chdir("D:\加密")
    
    def main():
        # 1、找文件
        # 獲取實(shí)習(xí)證明原文件的文件名
        rosterfile = os.listdir('.\原文件\\')
        # 獲取信息中表的姓名與密碼
        name,Password = getPassword()
    
        # 對(duì)每個(gè)文件進(jìn)行加密并保存
        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列,包括姓名、身份證號(hào)
        Name = pd.read_excel('.\名單.xlsx', usecols=[0],names=None)  # 讀取項(xiàng)目名稱(chēng)列,不要列名
        Id = pd.read_excel('.\名單.xlsx', usecols=[1],names=None)  # 讀取項(xiàng)目名稱(chēng)列,不要列名
        Name1 = Name.values.tolist()
        id = Id.values.tolist()
        # 提取身份證后六位作為密碼
        for i in id:
            password.append(str(i[0])[12:18:1])
        # 提取姓名為字符串,原來(lái)為list
        for j in Name1:
            name.append(j[0])
        return name,password
    
    # 加密文件并輸出
    # 變量說(shuō)明:rosterLast-原PDF文件路徑,rosterNow-加密后輸出路徑,password-加密密碼
    def encryptionPDF(rosterLast,rosterNow,password):
        pdf_reader = PdfFileReader(r'.\原文件\\%s'%(rosterLast))  # 輸入你想要操作的pdf文檔的位置/名稱(chēng)
        pdf_writer = PdfFileWriter()
    
        for page in range(pdf_reader.getNumPages()):
            pdf_writer.addPage(pdf_reader.getPage(page))
    
        pdf_writer.encrypt(password)  # 寫(xiě)入密碼并輸出到目的路徑
        with open(rosterNow, 'wb') as out:
            pdf_writer.write(out)
        print("文件:%s----已完成加密,密碼為:%s"%(rosterLast,password))
    
    # 函數(shù)入口
    if __name__ == '__main__':
        print("-----開(kāi)始加密-----")
        main()
        print("-----加密完成-----")

    二、源碼注釋

    1、所使用依賴(lài)包

    ??共使用三個(gè)函數(shù):

    # 文件操作
    import os
    
    # 操作PDF文件
    from PyPDF2 import PdfFileWriter, PdfFileReader
    
    # 操作數(shù)據(jù)
    import pandas as pd

    ??在這里我只是簡(jiǎn)單說(shuō)明用這些第三方庫(kù)干了什么,具體學(xué)習(xí)可參考官方文檔或者菜鳥(niǎo)教程。

    2、函數(shù)功能

    ??編碼過(guò)程中也共定義有三個(gè)函數(shù),其功能如下:

    # 主函數(shù),從這里我們可以看到我整體是如何實(shí)現(xiàn)此需求的
    def main():
    
    # 功能函數(shù),用來(lái)獲取文件密碼的,然后使用姓名與文件名做匹配,達(dá)到本人文件為本人身份證后六位的需求。
    def getPassword():
    
    #  功能函數(shù),本次編碼的核心,前面都可以作為準(zhǔn)備階段,就是為本函數(shù)用來(lái)加密文件而提供讀取、輸出路徑以及密碼的。
    def encryptionPDF(rosterLast,rosterNow,password):

    3、代碼拓展

    ??這只是一個(gè)很簡(jiǎn)單的需求,它并不具有普遍性,它可能僅在我電腦上可以運(yùn)行,當(dāng)你拷貝走源碼以后可能就沒(méi)法運(yùn)行了,會(huì)報(bào)各種各樣的錯(cuò)誤。
    ??如果你想直接用,那可能得按照我在編碼過(guò)程中準(zhǔn)備的數(shù)據(jù)一模一樣的去準(zhǔn)備。所以它其實(shí)只能用作學(xué)習(xí)交流,想要直接使用不太現(xiàn)實(shí)。
    ??當(dāng)然可以嘗試著在此基礎(chǔ)上增加功能或者增加代碼的可用性與門(mén)檻。例如:獲取用戶(hù)輸入的路徑,定義密碼模板等,讓代碼具有普遍性,可直接拷貝運(yùn)行那種的。

    三、可運(yùn)行環(huán)境

    ??那如果你不想改源碼,想直接用那怎么辦?
    ??沒(méi)問(wèn)題!那你就跟著我來(lái)吧,一點(diǎn)一點(diǎn)來(lái)。
    ??首先在D盤(pán)創(chuàng)建一個(gè)文件夾名為:加密;注意!必須保證它在根目錄下!它的路徑為D:\加密。然后打開(kāi)文件創(chuàng)建如下:必須一模一樣

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??差不多了,原文件放在原文件夾里面,運(yùn)行以后的文件就在加密版本文件夾里面。
    ??最重要的就是在名單的表格里面把信息填好,這就是用來(lái)設(shè)置密碼的,表格格式如下:身份證號(hào)碼格式為數(shù)字

    python怎么實(shí)現(xiàn)批量文件加密功能

    ??表格只有兩列!一列姓名、一列身份證號(hào)碼。身份證號(hào)碼為數(shù)字類(lèi)型!

    到此,關(guān)于“python怎么實(shí)現(xiàn)批量文件加密功能”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI