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中的sort()方法使用基础教程
Jan 08 Python
Python中模块与包有相同名字的处理方法
May 05 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
python @property的用法及含义全面解析
Feb 01 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
python3使用QQ邮箱发送邮件
May 20 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
python 进程的几种创建方式详解
Aug 29 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
python 如何用map()函数创建多线程任务
Apr 07 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 debug 安装技巧
2011/04/30 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php删除指定目录的方法
2015/04/03 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python 性能优化技巧总结
2016/11/01 Python
Python处理文本换行符实例代码
2018/02/03 Python
Python返回数组/List长度的实例
2018/06/23 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
《海底世界》教学反思
2014/04/16 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers