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

欢迎查看第一版

https://blog.csdn.net/weixin_45631815/article/details/140013476?spm=1001.2014.3001.5502

一功能改进

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

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

二具体代码实现

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

三其他改进

欢迎交流不同改进意见

相关推荐
傻啦嘿哟2 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670792 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
2601_962077602 小时前
python Dejavu库快速识别音频指纹实例探究
python·音乐识别·dejavu库·音频指纹识别·实例探究
科技苑2 小时前
如何用Python编程实现一个简单的Web爬虫?
人工智能·python
李少兄3 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
dayDayupbetter3 小时前
Visual C++ 2010安装与使用高手秘籍
python
隐擎fox3 小时前
深入理解网络传输层安全:TLS 指纹识别(JA3/JA4)原理与 Python 协议层检测实战
爬虫·python·网络协议·安全·网络安全·https
医疗信息化王工3 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
Seoyoneh3 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei4 小时前
Java 写 Agent:模型只是组件
java·开发语言