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在linux中输出带颜色的文字的方法
Jun 19 Python
Python中的高级数据结构详解
Mar 27 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
对Python _取log的几种方式小结
Jul 25 Python
在notepad++中实现直接运行python代码
Dec 18 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
利用python画出AUC曲线的实例
Feb 28 Python
python/golang 删除链表中的元素
Sep 14 Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 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
一个取得文件扩展名的函数
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
Discuz! Passport 通行证整合
2008/03/27 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
分享一个常用的javascript静态类
2014/12/31 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
用Python解决计数原理问题的方法
2016/08/04 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
通信工程毕业生自荐信
2013/11/01 职场文书
全国道德模范事迹
2014/02/01 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
行政前台岗位职责
2015/04/16 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
分享7个 Python 实战项目练习
2022/03/03 Python