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实现冒泡,插入,选择排序简单实例
Aug 18 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Python3模拟登录操作实例分析
Mar 12 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
在ipython notebook中使用argparse方式
Apr 20 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
详解pandas赋值失败问题解决
Nov 29 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(3)
2006/10/09 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
python打包成so文件过程解析
2019/09/28 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
结束运行python的方法
2020/06/16 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
社区食品安全实施方案
2014/03/28 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
大学生村官个人总结
2015/02/15 职场文书
人民检察院起诉书
2015/05/20 职场文书
员工旷工检讨书
2015/08/15 职场文书