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的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python 字典(dict)按键和值排序
Jun 28 Python
深入理解python对json的操作总结
Jan 05 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Django rest framework工具包简单用法示例
Jul 20 Python
python实现推箱子游戏
Mar 25 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python opencv实现图像边缘检测
Apr 29 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
Python调用.net动态库实现过程解析
Jun 05 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/01/14 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
js实现黑白div块画空心的图形
2018/12/13 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
Element Input输入框的使用方法
2020/07/26 Javascript
python对日志进行处理的实例代码
2018/10/06 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
工艺员岗位职责
2014/02/11 职场文书
护士个人总结范文
2015/02/13 职场文书
裁员通知
2015/04/25 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
机械生产实习心得体会
2016/01/22 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python