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继承和抽象类的实现方法
Jan 14 Python
优化Python代码使其加快作用域内的查找
Mar 30 Python
python中assert用法实例分析
Apr 30 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
基于python的列表list和集合set操作
Nov 24 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
python实现超级玛丽游戏
Mar 18 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
python matplotlib库的基本使用
Sep 23 Python
Python命令行参数argv和argparse该如何使用
Feb 08 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之第八天
2006/10/09 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
php微信开发之图片回复功能
2018/06/14 PHP
js有关元素内容操作小结
2011/12/20 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
python学习之编写查询ip程序
2016/02/27 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
python机器学习之神经网络实现
2018/10/13 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python中class的定义及使用教程
2019/09/18 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
工地门卫岗位职责范本
2014/07/01 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
战马观后感
2015/06/08 职场文书
工商行政处罚决定书
2015/06/24 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Spring中bean集合注入的方法详解
2022/07/07 Java/Android