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 os

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue.js 生命周期详解

Vue.js 是一款流行的 JavaScript 框架,它采用了组件化的开发方式,使得前端开发更加简单和高效。在 Vue.js 的开发过程中,了解和理解 Vue 的生命周期非常重要。本文将详细介绍 Vue 生命周期的四个阶段:创建、挂载、更新和销毁。 …

“中国软件杯”飞桨赛道晋级决赛现场名单公布

“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事,为《全国普通高校竞赛排行榜》榜单内赛事。今年,组委会联合百度飞桨共同设立了“智能系统设…

Profibus-DP转modbus RTU网关modbus rtu和tcp的区别

捷米JM-DPM-RTU网关在Profibus总线侧实现主站功能,在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备(如:EH流量计、倍福编码器等)接入到Modbus网络中;通过增加DP/PA耦合器,也可将Profibus PA从站接入…

探究使用HTTP代理ip后无法访问网站的原因与解决方案

目录 访问网站的原理是什么 1. DNS解析 2. 建立TCP连接 3. 发送HTTP请求: 4. 服务器响应: 5. 浏览器渲染: 6. 页面展示: 使用代理IP后访问不了网站,有哪些方面的原因 1. 代理IP的可用性: 2. 代理…

VVIC-商品详情

一、接口参数说明: item_get-根据ID取商品详情,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/vvic/item_get 名称类型必须描述keyString是调用key(点击获取测试k…

【编码魔法师系列_六大原则5】迪米特原则(Law of Demeter Principle)

学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性、可维护性和可重用性,从而让我们的开发效率更高。通…

Es、kibana安装教程-ES(二)

上篇文章介绍了ES负责数据存储,计算和搜索,他与传统数据库不同,是基于倒排索引来解决问题的。Kibana是es可视化工具。 分布式搜索ElasticSearch-ES(一) 一、ElasticSearch安装 官网下载地址:https://www…

Android JNI实现锅炉压力显示系统详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 第一步创建GuoLu.c文件 // // Created by DELL on 2023/8/13. // #include <stdio.h…

Flume拦截器

实现 Interceptor接口 方法1 是初始化: 方法2和3重载 拦截: 方法3 是关闭: 但是flume是通过内部类创建对象的

类加载过程和类加载器

类加载的过程 加载->连接&#xff08;验证->准备->解析&#xff09;->初始化 加载 1.获得二进制字节流&#xff08;可以从本地jar 网络或者动态代理获得&#xff09; 2.转化成方法区中的运行时数据 3.获得类对应的Class对象 加载的过程由类加载器完成&…

【node】用node爬取网页文本内容,并创建文本 将内容存储到文本中,附带源码

用node爬取网页并没有大家想象的困难&#xff0c;下面我就向大家讲述如何爬取&#xff1a; 序幕&#xff1a; 首先大家要了解cheerio&#xff0c;这是我们在node中编辑爬取内容的关键 Cheerio 是一个基于核心 jQuery 库的快速、灵活的服务器端 HTML 解析工具。它可以让你使用…

htmlCSS-----案例展示

目录 前言 作品效果 html代码 CSS代码 图片资源 前言 在学习html过程中我们要试着去写写一些案例&#xff0c;通过这些案例让我们更加熟悉代码以及丰富我们的经验&#xff0c;下面是我个人写的一个案例&#xff0c;代码和图片也给出了大家&#xff0c;你们可以参考参考。…

获取 Android 的 SHA1 值

1、调试版&#xff0c;可以直接在 Android studio 中的 gradle 中查看。也可以用下面方法进行 前提要先确定签名文件所在的路径&#xff1a;调试版默认使用的签名文件是debug.keystore&#xff0c;文件处于 C 盘用户目录下的.android文件夹下。打开命令行工具&#xff0c; 1、…

2个电压源组成回路导致的物理学悖论

看这是一个由直流电压源和电容器直接串联组成的回路&#xff1a; 根据平时的分析可以知道 UaUc; UbUd; 根据电容相关定律可以知道&#xff1a; 电容电压不能够跳变&#xff0c;所以如果是从完全放电状态开始充电&#xff0c;开始2端电压一定是0,。 推理&#xff1a; 当接…

Spring 使用注解开发、代理模式、AOP

使用注解开发 在Spring4之后&#xff0c;要使用注解开发&#xff0c;必须要保证AOP的包导入了 项目搭建&#xff1a; 在配置文件中导入约束&#xff0c;增加注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.spri…

Web framework-Gin

一、Gin Go Web--Go Module 软件框架&#xff08;software framework&#xff09;&#xff0c;通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范&#xff0c;也指为了实现某个软件组件规范时&#xff0c;提供规范所要求之基础功能的软件产品。 框架就是&#…

【广州华锐视点】AR电力职业技能培训系统让技能学习更“智慧”

随着科技的发展&#xff0c;教育方式也在不断地进步和创新。其中&#xff0c;增强现实(AR)技术的出现&#xff0c;为教育领域带来了全新的可能。AR电力职业技能培训系统就是这种创新教学方法的完美实践&#xff0c;它将虚拟与现实相结合&#xff0c;为学生提供了一个沉浸式的学…

Django实现音乐网站 ⑼

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对专辑、首页轮播图原有功能的基础上进行部分功能实现和显示优化。 目录 专辑功能优化 新增编辑 专辑语种改为下拉选项 添加单曲优化显示 新增单曲多选 更新歌手专辑数、专辑单曲数 获取歌手专辑数 保…

FL Studio for Windows-21.1.0.3713中文直装版功能介绍及系统配置要求

FL Studio 21简称FL水果软件,全称是&#xff1a;Fruity Loops Studio编曲&#xff0c;由于其Logo长的比较像一款水果因此&#xff0c;在大家更多的是喜欢称他为水果萝卜&#xff0c;FL studio21是目前最新的版本&#xff0c;这是一款可以让你的计算机就像是一个全功能的录音室&…

kafka 02——三个重要的kafka客户端

kafka 02——三个重要的kafka客户端 1. 前言1.1 关于 Kafka 的安装1.2 常用客户端简介1.3 依赖 2. AdminClient2.1 Admin Configs2.2 AdminClient API2.2.1 设置 AdminClient 对象2.2.2 创建 topic 获取 topic 列表2.2.3 删除topic2.2.4 查看 topic 的描述信息2.2.5 查看 topi…