- 程式內函式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...