Base64转docx的python实现
1. Base64编码概述
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,它实际上是一种“二进制转换到文本”的编码方式,它能够将任意二进制数据转换为ASCII字符串的形式,以便在只支持文本的环境中也能够顺利地传输二进制数据。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。
(1)base64编码:把二进制数据转为字符
(2)base64解码:把字符转为二进制数据
2. Base64编码简介
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
规则
举例:
转换前 11111111, 11111111, 11111111 (二进制)
转换后 00111111, 00111111, 00111111, 00111111 (二进制)
上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。
转换后,我们用一个码表来得到我们想要的字符串(也就是最终的Base64编码)
索引 |
对应字符 |
索引 |
对应字符 |
索引 |
对应字符 |
索引 |
对应字符 |
0 |
A |
17 |
R |
34 |
i |
51 |
z |
1 |
B |
18 |
S |
35 |
j |
52 |
0 |
2 |
C |
19 |
T |
36 |
k |
53 |
1 |
3 |
D |
20 |
U |
37 |
l |
54 |
2 |
4 |
E |
21 |
V |
38 |
m |
55 |
3 |
5 |
F |
22 |
W |
39 |
n |
56 |
4 |
6 |
G |
23 |
X |
40 |
o |
57 |
5 |
7 |
H |
24 |
Y |
41 |
p |
58 |
6 |
8 |
I |
25 |
Z |
42 |
q |
59 |
7 |
9 |
J |
26 |
a |
43 |
r |
60 |
8 |
10 |
K |
27 |
b |
44 |
s |
61 |
9 |
11 |
L |
28 |
c |
45 |
t |
62 |
+ |
12 |
M |
29 |
d |
46 |
u |
63 |
/ |
13 |
N |
30 |
e |
47 |
v |
||
14 |
O |
31 |
f |
48 |
w |
||
15 |
P |
32 |
g |
49 |
x |
||
16 |
Q |
33 |
h |
50 |
y |
应用
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“/”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
Mozilla Thunderbird和Evolution用Base64来保密电子邮件密码
Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。
垃圾讯息传播者用Base64来避过反垃圾邮件工具,因为那些工具通常都不会翻译Base64的讯息。
3. Base64转换为docx格式
那么如何将从URL中获取的Base64解码为docx文件呢?下面给出了python实现方法,修改文件名和路径,运行即可在当前目录生成同名的doc及docx文件。
import base64
import re
import subprocess
import pythoncom
import osfile_name="a.txt" #需要转换的Base64文件
path=r"F:\办公\8月\localCoverage" #文件所在目录
file_path=os.path.join(path,file_name)
doc_save_path = os.path.join(os.path.splitext(file_path)[0] + ".doc")
docx_save_path = os.path.join(os.path.splitext(file_path)[0] + ".docx")#先将Base64转成doc文件
def base64_to_doc(base64_data, doc_save_path): #param base64_data: base64流,param word_save_path: Word保存路径with open(doc_save_path, 'wb') as f:f.write(base64.b64decode(base64_data)) #然后将doc文件转成docx文件
def win_save_to_docx(base64str,doc_save_path,docx_save_path):base64_to_doc(base64str, doc_save_path)pythoncom.CoInitialize()from win32com import client# 转换doc为docxword = client.Dispatch("Word.Application") # 打开word应用程序doc = word.Documents.Open('{}'.format(doc_save_path)) # 打开word文件doc.SaveAs(docx_save_path, 16) # 另存为后缀为".docx"的文件,其中参数12或16指docx文件doc.Close() # 关闭原来word文件if __name__ == "__main__":with open (file_name,'r') as f:base64str=" ".join([l.rstrip() for l in f])win_save_to_docx(base64str, doc_save_path,docx_save_path)
Base64转docx的python实现相关推荐
- Py之docx:Python库之docx简介、安装、使用方法详细攻略
Py之docx:Python库之docx简介.安装.使用方法详细攻略 目录 Python库之docx简介 Python库之docx安装 docx使用方法 1.打开文档
- base64加密原理及python、C语言代码实现
base64算法 base64加密原理 关于base64,百度百科给出的解释是: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制 ...
- python base64编码_JS和Python实现AES算法
1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...
- python docx 替换文字_在.docx文件-Python中查找和替换文本
我一直在寻找一种方法来查找和替换docx文件中的文本,但运气不好.我试过docx模块,但没能成功.最后,我使用zipfile模块并替换docx存档中的document.xml文件,得出了下面描述的方法 ...
- python base64 实现_用Python开发GUI实战教程:图片转换素描画工具
python作为胶水语言,它几乎是无所不能的,但个人一直觉得在GUI开发方面,python可以算作是短板了,为什么?因为性能-python的性能问题,往往出现在其他编程语言对其的鄙夷中.但不管如何py ...
- ocr 合合平台pdf转doc文档
合合平台:https://www.textin.com/experience/pdf-to-word 文件base64转文档:Base64转docx的python实现_cjjmt的博客-CSDN博客 ...
- Python读写docx文件(三十五)
Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一下. https://python-docx.readthedocs. ...
- 三十一、Python读写docx文件
@Author:Runsen 文章目录 Python读写docx文件 Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一 ...
- python核心教程第二版答案_python核心编程第二版第4章习题答案.docx
python核心编程第二版第4章习题答案.docx 4-1.Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 答案: 所有的 Python 对象都拥有三个特性:身 ...
最新文章
- SQLSERVER使用CLR Stored Procedure导出数据到Excel
- amd一键超频怎么用_头条信息流“一键起量”工具怎么用?经验分享
- python语言有哪两个系列_(转)Python学习笔记系列——Python是一种纯粹的语言
- kuangbin专题十六 KMP扩展KMP HDU2594 Simpsons’ Hidden Talents
- python爬虫短片_Python爬虫练习:爬取全民小视频(附代码,过程)
- 算术的c语言程序设计,C 程序设计:变量与算术表达式
- 贺岁喜剧《高兴》山寨歌舞大狂欢 陕西话的RAP
- PowerShell 笔记
- android 申请拍照权限,React Native模块之Permissions权限申请的实例相机
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- 监控web状态的脚本
- Qt编程之mapx组件编程
- 腾讯企业邮箱开通过程中需要添加那些域名解析?
- android使用ffmpeg生成有声图片,多张图片添加音频文件合成mp4文件
- Hbase(二)hbase建表
- win xp32位系统安装mysql详细步骤
- 我拿到了梦寐以求的字节跳动和腾讯双offer!知乎上转疯了!
- 小狼毫自定义短语-Rime-双拼
- 点云数据滤波处理(PCL实现)
- 移动应用开发--实现微博界面(Andriod)