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插入排序算法的实现代码
Nov 21 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
python plotly画柱状图代码实例
Dec 13 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
520使用Python实现“我爱你”表白
May 20 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
简单了解Django项目应用创建过程
Jul 06 Python
python双向链表实例详解
May 25 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 快速生成 Flash 动画的方法
2007/03/06 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
php构造函数与析构函数
2016/04/23 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
python之PyMongo使用总结
2017/05/26 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
Python关于反射的实例代码分享
2020/02/20 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
大一自我鉴定范文
2013/10/04 职场文书
工程业务员岗位职责
2013/12/31 职场文书
高一地理教学反思
2014/01/18 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
教师个人年终总结
2015/02/11 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
JavaCV实现照片马赛克效果
2022/01/22 Java/Android