Python加密有敏感信息的Word/Excel等文件

为了保护含有身份证号、手机号等重要信息的Word和Excel文件,本文介绍了一个使用Python 3.8.1实现的加密脚本。脚本遍历指定目录下所有文档,检查内容,对含有敏感信息的文件进行加密处理,同时解决因Windows API导致的句柄冲突问题。文章还提及未来可能扩展到PDF和其他文件格式,并考虑开发GUI版本以增强适用性。
摘要由CSDN通过智能技术生成

① 目的

  1. 电脑使用时间长,保存了极多的WORD与EXCEL文件
  2. 文件版本不同(.doc .docx .xls .xlsx …)
  3. 文件内保存有重要的身份信息(身份证号、手机号…)
  4. 要求对word和excel文件进行加密操作

② 代码(Version: 3.8.1)

1. 遍历所有文档

import psutil
import xlrd
import os
import itertools
import re
import time
import win32com.client
from typing import Generator, Any
from itertools import product

def fp_generator():
    # 先获取电脑所有磁盘名称,导出利用os.walk()导出所有文件路径
    for disk in [device[0] for device in psutil.disk_partitions()][::-1]:  # 获得电脑所有磁盘名称
        for root, dirs, files in os.walk(disk):
            for file in files:
                yield os.path.join(root, file)

2. 获取Word与Excel文件的内容
(结果多次试验,若频繁地Quit掉win32.client.Dispathch(“Word.Application”),再立刻创建并访问word文件,会报错,原因可能是windows系统还未真正关闭上一个对象,造成句柄冲突。因此一定要time.sleep,至少0.1秒。
但是Excel完全没有这个问题,这是让人头大的windows api)

def excel_values(path) -> Generator[str, Any, Any]:
    # 获得所有EXCEL单元格(文本&数字)内容。若捕获错误,则为已加密文件打开时报错;或文件已损坏
    try:
        with xlrd.open_workbook(path) as wb:
            for sheet in wb.sheets():
                for x, y in itertools.product(range(sheet.ncols), range(sheet.nrows)):
                    cell = sheet.cell(y, x)
                    if cell.ctype == 1:
                        yield cell.value
                    elif cell
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值