Python实现对word文档添加密码去除密码的示例代码


Posted in Python onDecember 29, 2020

代码实现如下:

import win32com.client,os,time
 
def word_encryption(path, password):
  # 若加密保存.docx时,覆盖原文件,则无法成功添加密码。但是保存为另一个文件名,则可以添加密码。
  # 因此将A存为B,删A,再将B改为A。
  dirname, tempname = os.path.split(path)
  path_temp = os.path.join(dirname, tempname)
  while os.path.exists(path_temp):
    tempname = f'{len(tempname)}' + tempname
    path_temp = os.path.join(dirname, tempname)
  def encryption(fp, pt, pw):
    word_app = win32com.client.Dispatch('Word.Application')
    word_app.Visible = 0
    word_app.DisplayAlerts = 0
    doc = word_app.Documents.Open(fp, False, False, False, '')
    doc.SaveAs2(pt, None, False, pw)
    doc.Close()
    word_app.Quit()
 
  encryption(path, path_temp, password)
  os.remove(path) # 删除原文件
  os.rename(path_temp, path) # 改临时文件名称为原文件名称
  time.sleep(0.5) # 不要删除,不要删除
def word_decryption(path, password):
  # 若加密保存.docx时,覆盖原文件,则无法成功添加密码。但是保存为另一个文件名,则可以添加密码。
  # 因此将A存为B,删A,再将B改为A。
  dirname, tempname = os.path.split(path)
  path_temp = os.path.join(dirname, tempname)
  while os.path.exists(path_temp):
    tempname = f'{len(tempname)}' + tempname
    path_temp = os.path.join(dirname, tempname)
  def decryption(fp, pt, pw):
    word_app = win32com.client.Dispatch('Word.Application')
    word_app.Visible = 0
    word_app.DisplayAlerts = 0
    doc = word_app.Documents.Open(fp, False, False, False, key)
    doc.SaveAs2(pt, None, False, pw)
    doc.Close()
    word_app.Quit()
 
  decryption(path, path_temp, password)
  os.remove(path) # 删除原文件
  os.rename(path_temp, path) # 改临时文件名称为原文件名称
  time.sleep(0.5) # 不用删除
 
def elistdir(path):
  for file in os.listdir(path):
    file_path = os.path.join(path, file)
    if os.path.isdir(file_path) and file_path==path:#排除子路径
      elistdir(file_path)
      #print(file_path)
    elif os.path.splitext(file_path)[1]=='.docx':
      #list_name.append(file_path)
      
      if file_path != '':
        print(file_path)
        try:
          word_encryption(file_path, key)
        except:
          pass
 
def dlistdir(path):
  for file in os.listdir(path):
    file_path = os.path.join(path, file)
    if os.path.isdir(file_path) and file_path==path:#排除子路径
      dlistdir(file_path)
      #print(file_path)
    elif os.path.splitext(file_path)[1]=='.docx':
      #list_name.append(file_path)
      
      if file_path != '':
        print(file_path)
        try:
          word_decryption(file_path, '')
        except:
          pass
 
if __name__ == '__main__':
  key='12345'                 #加密解密密匙
  filedir=r"C:\Users\Administrator\Desktop"# 指定路径不包含子路径
  elistdir(filedir) #遍历word
  print('encrytion sucess\n Waiting...')
  time.sleep(2)#设置时间随意操作
  dlistdir(filedir) #遍历word
  print('decrytion Done')

实现:

Python实现对word文档添加密码去除密码的示例代码

到此这篇关于Python实现对word文档添加密码去除密码的示例代码的文章就介绍到这了,更多相关Python word文档添加密码去除密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
对于Python中RawString的理解介绍
Jul 07 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python语言的变量认识及操作方法
Feb 11 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
python如何删除文件中重复的字段
Jul 16 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python实现控制台输出彩色字体
Apr 05 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
python基础之类方法和静态方法
Oct 24 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 #Python
Python基于mediainfo批量重命名图片文件
Dec 29 #Python
用python批量下载apk
Dec 29 #Python
python如何调用php文件中的函数详解
Dec 29 #Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 #Python
pycharm如何设置官方中文(如何汉化)
Dec 29 #Python
详解Pycharm第三方库的安装及使用方法
Dec 29 #Python
You might like
php小偷相关截取函数备忘
2010/11/28 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
Python命令行解析模块详解
2018/02/01 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
在python中pandas的series合并方法
2018/11/12 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
python退出循环的方法
2020/06/18 Python
python3中编码获取网页的实例方法
2020/11/16 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
安全教育感言
2014/03/04 职场文书
意向协议书范本
2014/04/23 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
让子弹飞观后感
2015/06/11 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL