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版
Dec 07 Python
python多线程编程中的join函数使用心得
Sep 02 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
Python教程之全局变量用法
Jun 27 Python
Python爬虫工程师面试问题总结
Mar 22 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python读取Excel实例详解
Aug 17 Python
python的turtle库使用详解
May 10 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
简单的Python调度器Schedule详解
Aug 30 Python
python程序输出无内容的解决方式
Apr 09 Python
你需要掌握的20个Python常用技巧
Feb 28 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
CI(CodeIgniter)框架介绍
2014/06/09 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
15条JavaScript最佳实践小结
2013/08/09 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
python对日志进行处理的实例代码
2018/10/06 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python笔记之facade模式
2019/11/20 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
如何理解transaction事务的概念
2015/05/27 面试题
毕业自荐信
2013/12/16 职场文书
英文商务邀请信
2014/01/22 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
2014年村委会工作总结
2014/11/24 职场文书
入党后的感想
2015/08/10 职场文书