Python批量给excel文件加密

有时候我们需要定期给公司外部发邮件,在自动化发邮件的时候需要对文件进行加密传输。本文和你一起来探索用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浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中睿天下入选河南省网信系统2023年度网络安全技术支撑单位

近日,河南省委网信办发布了“河南省网信系统2023年度网络安全技术支撑单位名单”,中睿天下凭借出色的网络安全技术能力和优势成功入选。 本次遴选由河南省委网信办会同国家计算机网络与信息安全管理中心河南分中心(以下简称安全中心河南分中心…

随机过程的2个例题探讨

(一)马氏过程和泊松过程、维纳过程的联系 泊松过程、维纳过程两者都是独立增量过程。独立增量过程是马氏过程的条件: 1. 随机过程是独立增量过程 2. X(0) 0 满足以上两个条件的随机过程都是马氏过程。 注意&#xff1…

[数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章:MovingPandas入门指北,本文主要介绍三个MovingPandas的绘图实例。 MovingPandas官方仓库地址为:mo…

SQL | 计算字段

7-创建计算字段 7.1-计算字段 存储在数据库中的数据一般不是我们所需要的字段格式, 需要公司名称,同时也需要公司地址,但是这两个数据存储在不同的列中。 省,市,县和邮政编码存储在不同的列中,但是当我们…

MySQL 数据类型总结

整形数据类型 1字节 8bit 2^8256 MySQL 5.7 整数有个显示宽度 , 8.0 取消了 显示宽度 显示宽带为5,当insert的值不足5为,使用0 填充, create table test_1 ( c1 int(5) zerofill ); 浮点数据 定点数 位类型 BIT 日期和时间 t…

不一般的自定义时间(html+css+js)

自定义时间 写文章的因 关于要写这篇文章的原因 是记录在工作上遇到的困难需求,是希望能给大家提供一些解决问题的思路 接下来我描述这个需求的多样性,难点在哪。 勾选勾选框开始时间与结束时间默认显示昨天与今天。取消勾选框开始时间与结束时间清空。…

camera hal|如何学习一个新平台

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 我自己目前从事的是android camera hal 的工作,工作上接触到的芯片平台要么是高通的,要么是mtk的。 其实…

面试热题(回文链表)

给定一个链表的 头节点 head ,请判断其是否为回文链表。 如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。 回文链表类似于回文串,正读倒读的顺序是一样的,那么我们怎么去判断一个链表是否是回文链表呢&…

书单背景图片素材哪里找?这个工具赶紧用起来

好的文案是很重要的,但是如何找到好的文案却是一件很困难的事情。以下是一些可以寻找好的文案的方法分析,以及如何把书单文章转到视频的操作分享。 1.书籍和杂志:阅读关于广告、营销、文案和创意的书籍和杂志可以帮助你了解不同的文案类型和风…

【创作纪念日】我的2周年创作纪念日

创作者的探索与共鸣:用文字创造无限可能 在这特别的时刻,我想对你们说几句话。首先,我衷心感谢你们对我的支持和鼓励。正是因为你们的存在和关注,我才能够坚持不懈地创作和分享。 每一次写作都是一次心灵的倾诉和思想的交流。无论…

【Linux】创建普通用户以及Linux问题解决

创建普通用户 ❓可以看到我们现在是一个root用户,并不是一个普通用户,我们要如何创建普通用户呢? adduser 你的用户名passwd 你的用户名🔥注意这里passwd设置密码的时候,你输入密码电脑不会显示 删除普通用户 userd…

即将发布的 Kibana 版本可运行 Node.js 18

作者:Thomas Watson Kibana 构建在 Node.js 框架之上。 为了确保每个 Kibana 版本的稳定性和使用寿命,我们始终将捆绑的 Node.js 二进制文件保持为最新的最新长期支持 (LTS) 版本。 当 Node.js 版本 18 升级到 LTS 时,我们开始将 Kibana 升级…