最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程快速上手——PDF文件操作案例分析

 更新時(shí)間:2020年02月28日 11:58:06   作者:授我以驢  
這篇文章主要介紹了Python 文件操作,結(jié)合具體實(shí)例形式分析了Python針對(duì)pdf文件的遍歷、讀寫、加密、解密等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python PDF文件操作。分享給大家供大家參考,具體如下:

題目如下:

  • 利用第九章的os.walk()函數(shù)編寫腳本,遍歷文件夾中的所有pdf,用命令行提供的命令對(duì)這些PDF進(jìn)行加密,用原來的文件名加上_encrypted.pdf后綴,保存每個(gè)加密的PDF。在刪除原來的文件之前,嘗試用程序讀取并解密該文件,確保被正確加密
  • 然后編寫一個(gè)程序,找到文件夾中所有加密的PDF文件,利用提供的口令,創(chuàng)建pdf的解密拷貝,如果口令不對(duì),程序應(yīng)該打印一條消息,
    并繼續(xù)處理下一個(gè)pdf文件

思路如下:

- 程序內(nèi)函數(shù)1需要做以下事情:
找出文件夾中所有PDF文件
對(duì)PDF文件進(jìn)行加密
保存加密的PDF文件
檢驗(yàn)是否正確加密
刪除源文件
- 程序內(nèi)函數(shù)2需要做以下事情:
遍歷文件夾中所有帶_encrypted后綴的PDF文件
利用提供的口令進(jìn)行打開
能夠正確打開,則進(jìn)行口令拷貝保存到txt文件
不能正確打開輸出到屏幕
- 代碼需要做以下事情:
導(dǎo)入os,PyPDF2,sys,send2trash
生成新文件夾用于保存加密PDF及拷貝文本

  • 編寫一個(gè)加密函數(shù)
    函數(shù)內(nèi)調(diào)用os.walk()遍歷文件夾,文件名保存到列表
    命令行參數(shù)sys.argv()提供加密口令
    for循環(huán)進(jìn)行文件加密和保存加密文件操作
    decrypt進(jìn)行解密,確保正確加密,并進(jìn)行反饋
    刪除原有文件(send2trash)
  • 編寫一個(gè)生成解密拷貝函數(shù)
    os.walk()遍歷,decrypt進(jìn)行解密,反饋結(jié)果,生成密碼拷貝txt
    try-except進(jìn)行decrypt控制,解密失敗打印消息,continue繼續(xù)

代碼如下:

由于我的代碼在命令行運(yùn)行時(shí)提示找不到PyPDF2模塊,所以sys.argv命令行參數(shù)用的字符串直接放入函數(shù)進(jìn)行代替。

#! python3
import os, sys, PyPDF2,send2trash

os.makedirs(".\\NewPDF")
print("文件夾創(chuàng)建成功!")
path1 = os.path.abspath(".\\NewPDF")
# 文件加密函數(shù)
def decryptFile(argv,p = os.path.abspath(".\\New")):
 tagFloder = '.\\PDF'
 pdfList = []
 #當(dāng)前目錄下創(chuàng)建新文件夾
 #os.makedirs(".\\NewPDF")
 #遍歷目標(biāo)文件夾,將.pdf文件名添加到列表
 for foldername, subfolders, filenames in os.walk(tagFloder):
  for filename in filenames:
   if filename.endswith('.pdf'):
    pdfList.append(filename)
    print('找到PDF文件:%s' %filename)
   else:
    continue
 #對(duì)pdf文件進(jìn)行加密)
 for i in pdfList:
  pdfFile = open(os.path.join(foldername,filename),'rb')
  pdfReader = PyPDF2.PdfFileReader(pdfFile)
  pdfWriter = PyPDF2.PdfFileWriter()
  #拷貝
  for pageNum in range(pdfReader.numPages):
   pdfWriter.addPage(pdfReader.getPage(pageNum))
  newName = i[0:-4] #對(duì)文件名進(jìn)行分割
  pdfWriter.encrypt(argv) #口令加密
  pdfResult = open("{0}\\{1}_encrypted.pdf".format(p,newName),"wb+") #創(chuàng)建新文件名對(duì)象
  pdfWriter.write(pdfResult) #寫入新文件
  pdfReader2 = PyPDF2.PdfFileReader(pdfResult,'rb')
  #進(jìn)行加密確認(rèn)
  if pdfReader2.decrypt(argv):
   print("正確加密!刪除原文件中...")
   try:
    send2trash.send2trash(os.path.join(foldername,i))
   except:
    print("刪除原文件:%s 失敗!"%i)
  pdfResult.close()
  print("Done!")

# 口令拷貝函數(shù)
def copyDcrypt(argv,p = os.path.abspath(".\\New")):
 pdfList = []
 for foldername, subfolders, filenames in os.walk("."):
  print("父文件夾:%s"%foldername)
  for filename in filenames:
   if filename.endswith(".pdf"):
    pdfReader = PyPDF2.PdfFileReader(open(os.path.join(foldername,filename),'rb'))
    if pdfReader.isEncrypted:
     pdfList.append(filename)
     print('找到已加密PDF文件:%s' % filename)
   else:
    continue
  for i in pdfList:
   newName = i[0:-4] #對(duì)文件名進(jìn)行分割
   try:
    if pdfReader.decrypt(argv) == 1:
     copyFile = open("{0}\\{1}_PASSWORD.txt" .format(p,newName), 'w')
     copyFile.write("Password is : %s" % argv)
     copyFile.close()
     print("口令正確!拷貝生成成功!")
    else:
     print("口令錯(cuò)誤!")
   except:
    continue
# 調(diào)用函數(shù)
decryptFile("ABCDEFG",path1) 

copyDcrypt("ABCDEFG",path1)

運(yùn)行結(jié)果:

  • pycharm界面運(yùn)行結(jié)果:
    在這里插入圖片描述
    在這里插入圖片描述
    - 原文件夾:
    在這里插入圖片描述
    - 新文件夾:
    在這里插入圖片描述
    - 拷貝文本文件:
    在這里插入圖片描述

更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單

    Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單

    本文通過python3、第三方python庫Selenium和谷歌瀏覽器Chrome,完成WPS表單的自動(dòng)填寫,通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解Python自動(dòng)化之文件自動(dòng)化處理

    詳解Python自動(dòng)化之文件自動(dòng)化處理

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python文件自動(dòng)化處理展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python生成word合同的實(shí)例方法

    python生成word合同的實(shí)例方法

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python生成word合同的實(shí)例方法相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python實(shí)現(xiàn)自動(dòng)清理電腦垃圾文件詳解

    Python實(shí)現(xiàn)自動(dòng)清理電腦垃圾文件詳解

    經(jīng)常存在在我們的電腦中的垃圾文件主要是指系統(tǒng)在運(yùn)行過程中產(chǎn)生的tmp臨時(shí)文件、日志文件、臨時(shí)備份文件等。本文將利用Python實(shí)現(xiàn)自動(dòng)清理這些垃圾文件,需要的可以參考一下
    2022-03-03
  • RSA加密算法Python實(shí)現(xiàn)方式

    RSA加密算法Python實(shí)現(xiàn)方式

    這篇文章主要介紹了RSA加密算法Python實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python實(shí)現(xiàn)文件的分割與合并

    python實(shí)現(xiàn)文件的分割與合并

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)文件的分割與合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python dict remove數(shù)組刪除(del,pop)

    python dict remove數(shù)組刪除(del,pop)

    我們?cè)谟脭?shù)組列表做刪除的時(shí)候,可能選擇2個(gè)方法,一個(gè)是del,一個(gè)是pop方法
    2013-03-03
  • 使用Python實(shí)現(xiàn)批量ping操作方法

    使用Python實(shí)現(xiàn)批量ping操作方法

    這篇文章主要介紹了使用Python實(shí)現(xiàn)批量ping操作方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python3中datetime庫,time庫以及pandas中的時(shí)間函數(shù)區(qū)別與詳解

    python3中datetime庫,time庫以及pandas中的時(shí)間函數(shù)區(qū)別與詳解

    這篇文章主要介紹了python3中datetime庫,time庫以及pandas中的時(shí)間函數(shù)區(qū)別與詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解

    Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解

    這篇文章主要介紹了Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

乌鲁木齐县| 水城县| 怀仁县| 石棉县| 博客| 页游| 和顺县| 青川县| 福海县| 红原县| 咸阳市| 萝北县| 会同县| 金昌市| 孟津县| 金沙县| 汉阴县| 宁夏| 上饶市| 屯昌县| 区。| 大宁县| 新竹县| 迭部县| 保亭| 乡城县| 龙川县| 茌平县| 如东县| 安丘市| 昌图县| 肥城市| 沛县| 贺兰县| 灌阳县| 宜都市| 平山县| 曲周县| 九江市| 河北区| 汶川县|