有時候我們需要定期給公司外部發郵件,在自動化發郵件的時候需要對文件進行加密傳輸。本文和你一起來探索用python給單個文件和批量文件加密。
??
python自動化發郵件可參考【干貨】用Python每天定時發送監控郵件。
文章目錄
- 一、安裝pypiwin32包
- 二、定義給excel加密的函數
- 三、給單個excel加密
- 四、批量給excel加密
一、安裝pypiwin32包
??
調用win32com.client,需先要安裝pypiwin32包。打開cmd,安裝語句如下:
pip install pypiwin32
若安裝成功,會顯示結果如下:
??
??
??
二、定義給excel加密的函數
??
我們先定義一個給單個excel加密的函數,具體代碼如下:
import win32com.client#excel加密函數
def pwd_xlsx(old_filename, new_filename, pwd_str, pw_str=''):'''old_filename:舊文件名 new_filename:新文件名pwd_str:保存的新文件密碼pw_str:打開文件密碼,若無訪問密碼,則設為''''' xcl = win32com.client.Dispatch("Excel.Application")wb = xcl.Workbooks.Open(old_filename, False, False, None, pw_str)xcl.DisplayAlerts = False#關閉顯示告警對話框wb.SaveAs(new_filename, None, pwd_str, '')#保存時可設置訪問密碼xcl.Quit()
主要功能是輸入舊文件,生成新文件,并對新文件加密。
??
??
三、給單個excel加密
??
在批量加密之前,先調用上一節的函數對單個文件進行加密。具體代碼如下:
filename = "F:\\公眾號\\71.excel自動加密\\train_u6lujuX_CVtuZ9i.csv"
pwd_xlsx(filename,filename, '1111')
# 三個參數:待加密文件,加密后名稱,密碼
得到結果:
??
??
從上述pwd_xlsx函數調用語句可知,待加密文件和加密后文件是同一個,且設置的文件密碼是1111(密碼可根據需要自行設置)。即打開原始文件,保存新文件并加密。由于新文件和原始文件同名,實際是用加密后的新文件覆蓋了原始文件。
??
注意1: 我嘗試用os.chdir函數定義存儲原始文件的文件夾,在pwd_xlsx函數中只放文件名,結果報錯。
??
注意2: 該函數對excel文件可以加密,若輸入的是csv文件,雖然不會報錯,但是生成的文件并未加密。
??
若想加密后的文件不覆蓋原始文件,具體代碼如下:
old_filename = "F:\\公眾號\\71.excel自動加密\\date2.xlsx"
new_filename = "F:\\公眾號\\71.excel自動加密\\date2_m.xlsx"
pwd_xlsx(old_filename, new_filename, '123')
# 三個參數:待加密文件,加密后名稱,密碼
得到結果:
??
??
??
四、批量給excel加密
??
首先把需要加密的文件放到一個文件夾中,應用如下程序可以獲取該文件夾中的所有文件名稱。
import osfolder_path = "F:\\公眾號\\71.excel自動加密\\批量加密"
#文件夾路徑
file_list = os.listdir(folder_path)
#獲取文件夾中所有文件的文件名
for file_name in file_list:print(file_name)#打印文件夾中的文件名
得到結果:
pl_date1.xlsx
pl_date1_m.xlsx
pl_date2.xlsx
pl_date3.xlsx
pl_date4.xlsx
pl_date5.xlsx
原始文件夾內容如下:
??
??
可以發現兩者是一致的。接著調整一下上述代碼,生成原始文件路徑和名稱,以及新文件路徑和名稱,并批量調用加密函數,生成加密文件,具體代碼如下:
??
import osfolder_path = "F:\\公眾號\\71.excel自動加密\\批量加密"
#文件夾路徑
file_list = os.listdir(folder_path)
#獲取文件夾中所有文件的文件名
for file_name in file_list:old_filename = folder_path + '\\' + file_name#原始文件new_filename = old_filename.replace('.xlsx', '_m.xlsx')#新加密文件print(old_filename)print(new_filename)pwd_xlsx(old_filename, new_filename, '123')#調用加密函數對原始文件進行加密并生成新文件,文件密碼123
得到結果:
??
至此,Python中批量給excel文件加密已講解完畢,感興趣的朋友可以自己跟著代碼嘗試一遍圖片。
??
【限時免費進群】 在群內免費討論學習Python、玩轉Python、風控建模、人工智能學習、數據分析等內容,也可交流工作中遇到的相關問題。需要的朋友添加微信號19967879837,加時備注想進的群,比如風控建模。
??
你可能感興趣:
用Python繪制皮卡丘
用Python繪制詞云圖
用Python繪制520永恒心動
Python人臉識別—我的眼里只有你
Python畫好看的星空圖(唯美的背景)
【Python】情人節表白煙花(帶聲音和文字)
用Python中的py2neo庫操作neo4j,搭建關聯圖譜
Python浪漫表白源碼合集(愛心、玫瑰花、照片墻、星空下的告白)