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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
python 接收处理外带的参数方法
Dec 03 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
python自动识别文本编码格式代码
Dec 26 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
python脚本框架webpy的url映射详解
Nov 20 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动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
给ListBox添加双击事件示例代码
2013/12/02 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
python使用pymysql实现操作mysql
2016/09/13 Python
简单易懂的python环境安装教程
2017/07/13 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Python是什么 Python的用处
2020/05/26 Python
消防器材管理制度
2014/01/28 职场文书
禁止酒驾标语
2014/06/25 职场文书
学术会议邀请函
2015/01/30 职场文书
导游词怎么写
2015/02/04 职场文书
广告业务员岗位职责
2015/02/13 职场文书
2015年度党员个人总结
2015/02/14 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
教师节获奖感言
2015/07/31 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby