Python批量给excel文件加密

有时候我们需要定期给公司外部发邮件,在自动化发邮件的时候需要对文件进行加密传输。本文和你一起来探索用python给单个文件和批量文件加密。

python自动化发邮件可参考【干货】用Python每天定时发送监控邮件

文章目录

一、安装pypiwin32包

调用win32com.client,需先要安装pypiwin32包。打开cmd,安装语句如下:

python 复制代码
pip install pypiwin32

若安装成功,会显示结果如下:

二、定义给excel加密的函数

我们先定义一个给单个excel加密的函数,具体代码如下:

python 复制代码
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加密

在批量加密之前,先调用上一节的函数对单个文件进行加密。具体代码如下:

python 复制代码
filename = "F:\\公众号\\71.excel自动加密\\train_u6lujuX_CVtuZ9i.csv"
pwd_xlsx(filename,filename, '1111')
# 三个参数:待加密文件,加密后名称,密码

得到结果:

从上述pwd_xlsx函数调用语句可知,待加密文件和加密后文件是同一个,且设置的文件密码是1111(密码可根据需要自行设置)。即打开原始文件,保存新文件并加密。由于新文件和原始文件同名,实际是用加密后的新文件覆盖了原始文件。

注意1: 我尝试用os.chdir函数定义存储原始文件的文件夹,在pwd_xlsx函数中只放文件名,结果报错。

注意2: 该函数对excel文件可以加密,若输入的是csv文件,虽然不会报错,但是生成的文件并未加密。

若想加密后的文件不覆盖原始文件,具体代码如下:

python 复制代码
old_filename = "F:\\公众号\\71.excel自动加密\\date2.xlsx"
new_filename = "F:\\公众号\\71.excel自动加密\\date2_m.xlsx"
pwd_xlsx(old_filename, new_filename, '123')
# 三个参数:待加密文件,加密后名称,密码

得到结果:

四、批量给excel加密

首先把需要加密的文件放到一个文件夹中,应用如下程序可以获取该文件夹中的所有文件名称。

python 复制代码
import os

folder_path = "F:\\公众号\\71.excel自动加密\\批量加密"
#文件夹路径
file_list = os.listdir(folder_path)
#获取文件夹中所有文件的文件名
for file_name in file_list:
    print(file_name)
    #打印文件夹中的文件名

得到结果:

python 复制代码
pl_date1.xlsx
pl_date1_m.xlsx
pl_date2.xlsx
pl_date3.xlsx
pl_date4.xlsx
pl_date5.xlsx

原始文件夹内容如下:

可以发现两者是一致的。接着调整一下上述代码,生成原始文件路径和名称,以及新文件路径和名称,并批量调用加密函数,生成加密文件,具体代码如下:

python 复制代码
import os

folder_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浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

相关推荐
不知道写什么的作者6 分钟前
Flask快速入门和问答项目源码
后端·python·flask
孙胜完不了1 小时前
Day29
python
lkx097881 小时前
第四天的尝试
python
pengone2 小时前
PHP8.0版本导出excel失败
php·excel
lcccyyy12 小时前
day 29
python
(・Д・)ノ3 小时前
python打卡day29
开发语言·python
有杨既安然3 小时前
Python高级特性深度解析:从熟练到精通的跃迁之路
开发语言·python·数据挖掘·flask
蹦蹦跳跳真可爱5893 小时前
Python----神经网络(《Searching for MobileNetV3》论文概括和MobileNetV3网络)
人工智能·python·深度学习·神经网络
妄想成为master3 小时前
如何完美安装GPU版本的torch、torchvision----解决torch安装慢 无法安装 需要翻墙安装 安装的是GPU版本但无法使用的GPU的错误
人工智能·pytorch·python·环境配置
wanfeng_094 小时前
CMS(plone / joomla 搭建测试)
python·多站点·本地搭建·joomla·plone