您好,登錄后才能下訂單哦!
小編給大家分享一下Python中PDF文件操作的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
利用第九章的os.walk()函數編寫腳本,遍歷文件夾中的所有pdf,用命令行提供的命令對這些PDF進行加密,用原來的文件名加上_encrypted.pdf后綴,保存每個加密的PDF。在刪除原來的文件之前,嘗試用程序讀取并解密該文件,確保被正確加密
然后編寫一個程序,找到文件夾中所有加密的PDF文件,利用提供的口令,創建pdf的解密拷貝,如果口令不對,程序應該打印一條消息,
并繼續處理下一個pdf文件
- 程序內函數1需要做以下事情:
找出文件夾中所有PDF文件
對PDF文件進行加密
保存加密的PDF文件
檢驗是否正確加密
刪除源文件
- 程序內函數2需要做以下事情:
遍歷文件夾中所有帶_encrypted后綴的PDF文件
利用提供的口令進行打開
能夠正確打開,則進行口令拷貝保存到txt文件
不能正確打開輸出到屏幕
- 代碼需要做以下事情:
導入os,PyPDF2,sys,send2trash
生成新文件夾用于保存加密PDF及拷貝文本
編寫一個加密函數
函數內調用os.walk()遍歷文件夾,文件名保存到列表
命令行參數sys.argv()提供加密口令
for循環進行文件加密和保存加密文件操作
decrypt進行解密,確保正確加密,并進行反饋
刪除原有文件(send2trash)
編寫一個生成解密拷貝函數
os.walk()遍歷,decrypt進行解密,反饋結果,生成密碼拷貝txt
try-except進行decrypt控制,解密失敗打印消息,continue繼續
#! python3 import os, sys, PyPDF2,send2trash os.makedirs(".\\NewPDF") print("文件夾創建成功!") path2 = os.path.abspath(".\\NewPDF") # 文件加密函數 def decryptFile(argv,p = os.path.abspath(".\\New")): tagFloder = '.\\PDF' pdfList = [] #當前目錄下創建新文件夾 #os.makedirs(".\\NewPDF") #遍歷目標文件夾,將.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 #對pdf文件進行加密) 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] #對文件名進行分割 pdfWriter.encrypt(argv) #口令加密 pdfResult = open("{0}\\{1}_encrypted.pdf".format(p,newName),"wb+") #創建新文件名對象 pdfWriter.write(pdfResult) #寫入新文件 pdfReader2 = PyPDF2.PdfFileReader(pdfResult,'rb') #進行加密確認 if pdfReader2.decrypt(argv): print("正確加密!刪除原文件中...") try: send2trash.send2trash(os.path.join(foldername,i)) except: print("刪除原文件:%s 失敗!"%i) pdfResult.close() print("Done!") # 口令拷貝函數 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] #對文件名進行分割 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("口令錯誤!") except: continue # 調用函數 decryptFile("ABCDEFG",path2) copyDcrypt("ABCDEFG",path2)
pycharm界面運行結果:
- 原文件夾:
- 新文件夾:
- 拷貝文本文件:
以上是“Python中PDF文件操作的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。