python自动移除excel文件密码(升级v2版本)

欢迎查看第一版
https://blog.csdn.net/weixin_45631815/article/details/140013476?spm=1001.2014.3001.5502

一功能改进

此版本主要改进功能有以下:

  1. 直接可以调用函数实现
  2. 可以尝试多个密码
  3. 没有加密的文件进行保存,可以按实际业务进行改进.
  4. 思路来源:java 面向对象设计模式.(解码失败后的策略模式1进行尝试2对异常进行处理)

二具体代码实现

import msoffcrypto
import os
# 已加密Excel文件路径
encrypted_file = r"已加密Excel文件路径"
# 未加密文件将保存的路径
unencrypted_file = r"未加密文件将保存的路径"
# Excel文件可能的密码列表
excel_passwords = ["密码1", "密码2"]
def decrypt_excel(encrypted_file, unencrypted_file, excel_passwords):
    for password in excel_passwords:
        try:
            # 打开加密文件
            with open(encrypted_file, "rb") as encrypted_file_fd:
                office_file = msoffcrypto.OfficeFile(encrypted_file_fd)

                # 尝试使用当前密码解密
                office_file.load_key(password=password)

                # 如果没有抛出异常,说明密码正确,进行解密并跳出循环
                with open(unencrypted_file, "wb") as unencrypted_file_fd:
                    office_file.decrypt(unencrypted_file_fd)

                print(f"文件已使用密码'{password}'解密并保存至:{unencrypted_file}")
                break  # 密码正确,解密完成,结束循环

        except msoffcrypto.exceptions.InvalidKeyError:
            continue  # 当前密码错误,尝试下一个密码
        # 如果文件[Unencrypted document]没有加密直接就退出循环
        except msoffcrypto.exceptions.FileFormatError:
            # 没有加密的文件,直接复制操作
            with open(unencrypted_file, "wb") as unencrypted_file_fd:
                unencrypted_file_fd.write(open(encrypted_file, "rb").read())
            break
        except Exception as e:
            print(f"解密过程中发生错误:{e}")
            break  # 发生其他错误,结束循环
directory_path = r"G:\路径加密"
for root, dirs, files in os.walk(directory_path):
    for file in files:
        print(os.path.join(root, file))
        m=r'{}'.format(os.path.join(root, file))
        outm=r'{}'.format(os.path.join(root.replace('加密',''),file))
        decrypt_excel(m,outm,excel_passwords)

三其他改进

欢迎交流不同改进意见

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

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

相关文章

仅1月出刊:计算机科学类知网检索普刊

【欧亚科睿学术】 Journal of Computer Science and Electrical Engineering 《计算机科学与电气工程杂志》是一份同行评审期刊,发表计算机科学和电气工程几个领域的原创研究文章和综述文章。 它由UPUBSCIENCE出版社出版。它支持开放获取政策,即让所有…

vmdk to vhdx 虚拟磁盘格式转换qemu-img

qemu-img是创建、转换、修改磁盘映像的工具,我们可以用它非常方便的转换虚拟磁盘格式,比如在vmdk、vhdx、qcow2、vdi之间相互转换,它在流行的Linux、macOS、Windows平台上都发布有对应的版本。 本文介绍的是Windows版本,它支持下图…

【STM32入门教学】——串口、定时器与参考资料

机器人工程系列文章目录 这里罗列了系列文章链接 概念总述 STM入门教学 还没写完组里急用 文章目录 机器人工程系列文章目录概念总述STM入门教学 前言串口串口的概念cubemxkeil5实物实验关于cubemx生成逻辑printf升级usart.cmain.hretarget.c 定时器定时器的概念cubemxkeil5…

IDEA中使用Maven打包及碰到的问题

1. 项目打包 IDEA中,maven打包的方式有两种,分别是 install 和 package ,他们的区别如下: install 方式 install 打包时做了两件事,① 将项目打包成 jar 或者 war,打包结果存放在项目的 target 目录下。…

医疗器械FDA | 医疗器械软件如何做源代码审计?

医疗器械网络安全测试https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e 医疗器械源代码审计是一个确保医疗器械软件安全性和可靠性的重要过程。以下是医疗器械源代码审计的主要步骤和要点,以…

MIX OTP——依赖项和总体项目

在本章中,我们将讨论如何管理 Mix 中的依赖项。 我们的 kv 应用程序已经完成,现在是时候实现处理我们在第一章中定义的请求的服务器了: 但是,我们不会向 kv 应用程序添加更多代码,而是将 TCP 服务器构建为另一个应用程…

ROS2 rosbag2记录仪

rosbag2类似于行车记录仪,录制一段话题数据,录制完成后可以多次发布出来进行测试和实验,也可以将话题数据分享给别人用于验证算法等。 1.启动talker服务 ros2 run demo_nodes_cpp talker 2.记录话题数据 chatter ros2 bag record /chatte…

数据库操作-DML和DQL

DML DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 添加数据(INSERT) 1.指定字段添加数据: insert into 表名 ( 字段名 1, 字段名 2) values ( 值 1, 值 2); 2…

O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们,O2OA(翱途)平台 V9.1将于7月3日正式发布,届时欢迎大家到O2OA官网部署下载及体验最新版本。新版本我们在如下方面做了更大的努力: 1.扩展数据库兼容性和功能范围:在O2OA…

[SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI

1. 发生问题的demo 业务逻辑代码 class Address: ObservableObject {Published var street "123 Apple Street"Published var city "Cupertino" }class User: ObservableObject {Published var name "Tim Cook"Published var address Addr…

使用Python绘制动态螺旋线:旋转动画效果

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame绘制螺旋线函数主循环 完整代码 引言 螺旋线是一个具有美学和数学魅力的图形。通过编程,我们可以轻松创建动态旋转的螺旋线动画。在这篇博客中,我们将使用Python和Pygame库来实现…

XTDrone-固定翼无人机编队跟踪无人车-配置教程

配置使用ROS版本为Neotic 1 配置 1.1 加载固定翼无人机编队跟踪控制工程文件 cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src 1.2 加载一些用到的功能包 sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改 sudo apt-get insta…

试用笔记之-免费的汇通餐饮管理软件

首先下载免费的汇通餐饮管理软件: http://www.htsoft.com.cn/download/htcanyin.exe 安装后的图标 登录软件,默认没有密码 汇通餐饮管理软件主界面 汇通餐饮软件前台系统 点菜

synchronized用法解析

锁的意义: 比如我跟我老弟要用电脑,我想学java,他想拿电脑打LOL,如果我敲java代码敲的正嗨皮,他突然把电脑抢了过去,代码还没保存,就被他拿去打LOL了,很✓8,那么如何解决…

【Arduino】XIAOFEIYU实验ESP32实验热敏电阻(图文)

今天XIAOFEIYU来实验一下ESP32使用热敏电阻传感器。 热敏电阻具有测试灵敏,测试范围大的特点,具有广泛的使用范围。常温器件适用于-55℃~315℃,高温器件适用温度高于315℃(目前最高可达到2000℃)&#xff…

[图解]SysML和EA建模住宅安全系统-07-to be块定义图

1 00:00:00,180 --> 00:00:06,820 我们来看,这是之前的那张图,现有的 2 00:00:08,290 --> 00:00:09,160 我们怎么做 3 00:00:09,170 --> 00:00:11,280 你看,我们之前 4 00:00:11,290 --> 00:00:15,600 在现状,as i…

Android AlertDialog对话框

目录 AlertDialog对话框普通对话框单选框多选框自定义框 AlertDialog对话框 部分节选自博主编《Android应用开发项目式教程》(机械工业出版社)2024.6 在Android中,AlertDialog弹出对话框用于显示一些重要信息或者需要用户交互的内容。 弹出…

GeoServer改造Springboot源码十(样式管理设计)

GeoServer改造Springboot源码一(公共部分) GeoServer改造Springboot源码二(数据源管理设计) GeoServer改造Springboot源码三(数据源管理代码) GeoServer改造Springboot源码四(图层管理设计&a…

【知识】DGL中graph默认的稀疏矩阵格式和coo格式不对的坑

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 先给结论 源码解读 代码验证 网上没找到相关的讨论,因此只能从源码上一步步查。 先给结论 对于自己使用dgl.graph接口创建的图&am…

20240702在vmware17.5虚拟机中让ubuntu22.04使用主机的代理上网

20240702在vmware17.5虚拟机中让ubuntu22.04使用主机的代理上网 2024/7/2 14:41 百度:vmware 虚拟机 使用主机代理 上网 https://blog.csdn.net/nomoremorphine/article/details/138738065?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_ba…