Base64编码解码小脚本

目录

 脚本

Base64简介

Base64编码原理

Python应用base64编码和解码

Python File(文件) 方法

open()方法

file对象

with as

Python对文件后缀及路径拆分


 脚本

使用说明:

1、拖入要处理文件

2、输入处理后保存文件名称

3、选择处理方式

import base64
import os
'''定义控制要处理的文件
file_path="C:\\Users\\ma\\Desktop\\py\\"    #文件存放路径
raw_file_name="1.png"                       #文件名
Processed_file_name="1.txt"                   #处理后文件名
'''

'''
对文件进行base64编码
'''
def encode_file(FILE):
    with open(FILE,"rb") as file:           #读文件
        file_read=file.read()
    with open(PROCESSED_FILE_NAME,"wb") as encode_file:     #写入文件
        encode_file.write(base64.b64encode(file_read))
        print("编码完成!")
'''
对文件进行base64解码
'''
def decode_file(FILE):
    with open(FILE,"rb") as file:           #读文件
        file_read=file.read()
    with open(PROCESSED_FILE_NAME,"wb") as decode_file:     #写入文件
        decode_file.write(base64.b64decode(file_read))
        print("解码完成!")

if __name__=="__main__":
    #输入定义要处理的文件
    file_path=input("请拖入文件:")                              #拖入要处理的文件
    FILE_PATH=os.path.split(file_path)[0]                       #取文件所在的路径
    processed_file_name=input("请输入保存文件名:")
    PROCESSED_FILE_NAME=FILE_PATH+"\\"+processed_file_name      #处理后文件与原文件放在同一目录

    while 1:
        A=input("选择处理方式:编码(1),解码(2)。")
        if A=="1":
            encode_file(file_path)
            break
        elif A=="2":
            decode_file(file_path)
            break
        else:
            print("请选择正确的处理方式。")

Base64简介

        Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。

        按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。

Base64编码原理

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 ),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

Base64编码遵循以下规则: 

一、把3个字符变成4个字符。 

二、每76个字符加一个换行符。 

三、最后的结束符也要处理。 

转码过程示例:

对照转换表:结果 c z E z   

从严格意义上来说,BASE64编码算法并不算是真正的加密算法,它只是将源数据转码成为了一种不易阅读的形式,而转码的规则是公开的(解码很容易)。转码之后的数据具有不可读性,需要解码后才能阅读。 

注:BASE64加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。

转自:Python中Base64编码与解码_pengjunlee的博客-CSDN博客_pythonbase64

Python应用base64编码和解码

使用base64编码

#对字符串进行base64编码
import base64    #导入库
url="https://blog.csdn.net/ma963852?type=blog"
#被编码对象必须是二进制数据
bytes_url=url.encode("utf-8")    #转为二进制数据
encode_url=base64.b64encode(bytes_url)    #对其进行base64编码
print(encode_url)

#输出结果
b'aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hOTYzODUyP3R5cGU9YmxvZw=='

使用base64解码

#解码base64
import base64    #导入库
url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hOTYzODUyP3R5cGU9YmxvZw=="
decode_url=base64.b64decode(url)    #对其进行base64解码
print(decode_url)

#输出结果
b'https://blog.csdn.net/ma963852?type=blog'

Python File(文件) 方法

open()方法

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

mode 参数有:

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

6

file.readline([size])

读取整行,包括 "\n" 字符。

7

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

8

file.tell()

返回文件当前位置。

9

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

10

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

 转自:Python File(文件) 方法 | 菜鸟教程

with as

with as语句的作用:

1、解决异常退出时资源释放的问题;

2、解决用户忘记调用close方法而产生的资源泄漏问题。

有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

一般读取文件:

file=open("file.txt","r")
file_read=file.read()
file.close()

这里没有对读取数据发生异常的情况做出处理

file=open("file.txt","r")
try:
	file_read=file.read()
finally:
	file.close()

无论try里执行什么都会调用finally的。

with open("file.txt","r") as file:
	file_read=file.read()

而with同样可以很好的处理上下文环境产生的异常,且非常简洁。

Python对文件后缀及路径拆分

os.listdir()

os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

只支持在 Unix, Windows 下使用。

os.listdir(PATH)

import os
PATH="C:\\"
dir=os.listdir(PATH)
for i in dir:
	print(i)

输出:

C:\Users\ma\Desktop\py>python test.py
$360Section
$Recycle.Bin
$WINDOWS.~BT
$Windows.~WS
$WinREAgent
.rnd
360SANDBOX
adb
AMTAG.BIN
Config.Msi
Documents and Settings
DumpStack.log.tmp
hiberfil.sys
inetpub
Intel
jetbrains-agent.jar
NVIDIA
pagefile.sys
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
Speed.log
swapfile.sys
System Volume Information
testlog
Users
wamp64
Windows

 

os.path()模块

import os
path="C:\\Users\\ma\\Desktop\\py\\test.txt"
print("返回绝对路径",os.path.abspath(path))
print("返回文件名",os.path.basename(path))
print("返回文件路径",os.path.dirname(path))
print("如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。",os.path.exists(path))
print("把路径分割成 dirname 和 basename,返回一个元组",os.path.split(path)[0],os.path.split(path)[1])
print("分割路径,返回路径名和文件扩展名的元组",os.path.splitext(path)[0],os.path.splitext(path)[1])

输出结果:

C:\Users\ma\Desktop\py>python test.py
返回绝对路径--- C:\Users\ma\Desktop\py\test.txt
返回文件名--- test.txt
返回文件路径--- C:\Users\ma\Desktop\py
如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False--- True
把路径分割成 dirname 和 basename,返回一个元组--- C:\Users\ma\Desktop\py test.txt
分割路径,返回路径名和文件扩展名的元组--- C:\Users\ma\Desktop\py\test .txt

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值