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对字典进行排序实例
Sep 25 Python
详细解读Python中的__init__()方法
May 02 Python
对python Tkinter Text的用法详解
Oct 11 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python找出9个连续的空闲端口
2016/02/01 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
详解python中的文件与目录操作
2017/07/11 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Python input函数使用实例解析
2019/11/22 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
C#基础面试题
2016/10/17 面试题
医院工作检讨书范文
2014/02/10 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
五年级上册复习计划
2015/01/19 职场文书
实习生个人总结范文
2015/02/28 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android