当前位置: 首页 > news >正文

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())breakexcept 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.lryc.cn/news/394253.html

相关文章:

  • 深入MOJO编程语言的单元测试世界
  • Canvas:掌握颜色线条与图像文字设置
  • 打包导入pyzbar的脚本时的注意事项
  • 02-android studio实现下拉列表+单选框+年月日功能
  • 曹操的五色棋布阵 - 工厂方法模式
  • 谷粒商城学习笔记-逆向工程错误记录
  • FastAPI+SQLAlchemy数据库连接
  • Android中的适配器,你知道是做什么的吗?
  • GitHub详解:代码托管与协作开发平台
  • 【植物大战僵尸杂交版】获取+存档插件
  • BP神经网络与反向传播算法在深度学习中的应用
  • 【数据结构与算法】插入排序
  • MySQL如何实现数据排序
  • 给我的 IM 系统加上监控两件套:【Prometheus + Grafana】
  • 【Python】基于动态规划和K聚类的彩色图片压缩算法
  • 【做一道算一道】和为 K 的子数组
  • Facebook应用开发:认证与授权登录流程详解
  • 实战:搭建一款属于自己的个人知识库~docusaurus(强大且丝滑)-2024.7.7(测试成功)
  • Java教程之IO模式精讲,NIO+BIO
  • 如何让代码兼容 Python 2 和 Python 3?Future 库助你一臂之力
  • AI让大龄程序员重新焕发活力
  • Python在现代办公自动化中的应用:会不会被裁?就看你的效率了!
  • Laravel5+mycat 报错 “Packets out of order”
  • 使用androidx.appcompat:appcompat:1.7.0无法运行的问题
  • 基于Java的水果商品销售网站
  • Redis 线程模型
  • 栈和队列---循环队列
  • 打卡第4天----链表
  • 07-7.1.1 查找的基本概念
  • 【数据结构与算法】快速排序双指针法