Python程式設計快速上手 PDF檔案操作案例分析

2022-10-04 14:48:30 字數 2637 閱讀 3798

- 程式內函式1需要做以下事情:

找出資料夾中所有pdf檔案

對pdf檔案進行加密

儲存加密的pdf檔案

檢驗是否正確加密

刪除原始檔

- 程式內函式2需要做以下事情:

遍歷資料夾中所有帶_encrypted字尾的pdf檔案

利用提供的口令進行開啟

能夠正確開啟,則進行口令拷貝儲存到txt檔案

不能正確開啟輸出到螢幕

- **需要做以下事情:

匯入os,pypdf2,sys,send2trash

生成新資料夾用於儲存加密pdf及拷貝文字

#! python3

import os, sys, pypdf2,send2trash

os.makedirs(".\\newpdf")

print("資料夾建立成功!")

path1 = os.path.abspath(".\\程式設計客棧newpdf")

# 檔案加密函式

def decryptfile(ar**,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,filenam程式設計客棧e),'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(ar**) #口令加密

pdfresult = open("\\_encrypted.pdf".format(p,newname),"wb+") #建立新檔名物件

pdfwriter.write(pdfresult) #寫入新檔案

pdfreader2 = pypdf2.pdffilereader(pdfresult,'rb')

#進行加密確認

if pdfreader2.decrypt(ar**):

print("正確加密!刪除原檔案中...")

try:

send2trash.send2trash(os.path.join(foldername,i))

except:

print("刪除原檔案:%s 失敗!"%i)

pdfresult.close()

print("done!")

# 口令拷貝函式

def copydcrypt(ar**,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(ar**) == 1:

copyfile = open("\\_password.txt" .format(p,newname), 'w')

copyfile.write("password is : %s" % ar**)

copyfile.close()

print("口令正確!拷貝生成成功!")

else:

print("口令錯誤!")

except:

continue

# 呼叫函式

decryptfile("abcdefg",path1)

copydcrypt("abcdefg",path1)

Python程式設計快速上手 實踐專案

例如,字典值 意味著玩家有1條繩索 6個火把 42枚金幣等。寫乙個名為displayinventory 的函式,它接受任何可能的物品清單,並顯示如下 inventory 12 arrow 42 gold coin 1 rope 6 torch 1 dagger total number of ite...

《Python遊戲程式設計快速上手》 導讀

在寫作本書的過程中,我意識到,像python這樣的現代語言使得程式設計更加容易,並且為新一代的程式設計師提供了更多的功能。python擁有平緩的學習曲線,而且是供專業程式設計師使用的一種正規語言。目前的程式設計書籍大多分為兩種型別。第一種,與其說是教程式設計的書,倒不如說是在教 遊戲製作軟體 或教授...

Python程式設計快速上手 global 語句

如果要在乙個函式內修改全域性變數,就使用 global 語句。如果在函式的頂部有 global eggs 這樣的 它就告訴python 這個函式中,eggs 指的是全域性變數,所以不要用這個名字建立乙個區域性變數。示例 samename2.py def spam global eggs eggs s...