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生成随机密码的示例分享
Feb 18 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
Python字典的核心底层原理讲解
Jan 24 Python
pandas分区间,算频率的实例
Jul 04 Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
基于python 凸包问题的解决
Apr 16 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 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在字符断点处截断文字的实现代码
2011/04/21 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
深入理解PHP中的count函数
2016/05/31 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
JavaScript版代码高亮
2006/06/26 Javascript
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python正则表达式使用经典实例
2016/06/21 Python
python中cPickle类使用方法详解
2018/08/27 Python
python实现简易淘宝购物
2019/11/22 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
介绍一下grep命令的使用
2015/06/12 面试题
大学四年个人的自我评价
2014/02/26 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
开工仪式主持词
2014/03/20 职场文书
优秀志愿者感言
2015/08/01 职场文书
公司新员工欢迎词
2015/09/30 职场文书
民事调解协议书
2016/03/21 职场文书