Python实现对word文档添加密码去除密码的示例代码
作者:1want0 发布时间:2021-05-05 20:42:05
标签:Python,word,密码
代码实现如下:
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')
实现:
来源:https://blog.csdn.net/qq_34652083/article/details/111771403
0
投稿
猜你喜欢
- 本文主要是针对 cumsum函数的一些用法。具体应用场景看下面的数据集。第一列是userID,第二列是安装的时间,第三列是安装的次数。我们现
- 前言虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。有一种
- 本文实例讲述了PHP面向对象继承用法。分享给大家供大家参考,具体如下:继承先看两个类<?phpclass CdProduct { &n
- Pythonpython 真的太好用了,但是它真的好慢啊(哭死) ; C++ 很快,但是真的好难写啊,此生能不碰它就不碰它。老天啊,有没有什
- PHP 备份 mysql 数据库的源代码,在完善的 PHP+Mysql 项目中,在后台都会有备份 Mysql 数据库的功能,有了这个功能,对
- 前言:本文研究的主要是Python实现pig Latin小游戏的简单代码,具体介绍如下。Pig Latin是一个语言游戏。步骤:1.让用户输
- 据国外媒体报道,相较于IE8浏览器,微软最新一代浏览器IE9的最大改进就是硬件加速HTML5。微软承诺,通过利用IE9中的硬件加速功能,开发
- 项目介绍go-admin 是一个中后台管理系统,基于(gin, gorm, Casbin, Vue, Element UI)实现。主要目的是
- 在这个abc.php文件中写入如下代码。<?php phpinfo(); ?>你将会看到一个网页,网页内容通常,如下图所示:用中
- 在家无聊,线代和高数看不懂,整点事情干,就准备预定回学校的高铁票,于是就有了这个文章准备工作1.pip安装chromediver,当然也可以
- pytorch geometric的GNN、GCN节点分类# -*- coding: utf-8 -*-import osimport to
- 本文实例讲述了golang操作mongodb的方法。分享给大家供大家参考。具体实现方法如下:package mainimport (&nbs
- 这些天因为有数据割接的需求,于是有要写关于批量更新的程序。我们的数据库使用的是SQLSERVER2005,碰到了一些问题来分享下。首先注意S
- 首先我们有这么一种需求,就是我在一个列表中点击了某个item,跳转到详情界面,那么我就需要把item的实体数据从列表页面传递到详情页面,那么
- Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:Tkinter: Tkinter 模块(Tk 接口)是 P
- 定义字典 dic = {'a':"hello",'b':"how",
- 今天学习CI框架过程中遇到个问题: A PHP Error was encountered Severity: Notice Message
- python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。下面将具体介绍几种常用情况:(1)主程序
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下话不多说,直接上代码:全部工程文件,在GitHub:五子棋
- 1. js的数据类型1.1 js引入方式<!DOCTYPE html><html lang="en"&