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实现提取谷歌音乐搜索结果的方法
Jul 10 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
Python 查看文件的读写权限方法
Jan 23 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Python双向循环链表实现方法分析
Jul 30 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
python基础之文件处理知识总结
May 23 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
15种PHP Encoder的比较
2007/03/06 PHP
php的memcached客户端memcached
2011/06/14 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
历史专业个人求职信分享
2013/12/20 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
本科应届生自荐信
2014/06/29 职场文书