首页 > 编程语言 >Python——24days

Python——24days

时间:2023-09-22 16:50:03浏览次数:39  
标签:x00 Python res 24days json print 序列化 pickle

序列化模块

pickle模块

hashilb模块(加密)

————————————————————————————————————————————————

什么是序列化?什么是序列?
序列就是字符串
序列化是把其他数据类型转为json字符串的过程

什么是反序列化?
把json字符串转为其他数据类型的过程就是反序列化

序列化的目的

使程序更具安全性

Json模块和Pickle模块:

Json:和别人数据交互的时候使用。Json就是一种通话的序列化格式,是一个沟通的桥梁。只有很少的一部分数据类型可以通过Json转成字符串类型。

Pickle:所有的Python中的数据类型都可以转化成字符串形式。Pickle序列化的内容只有Python能理解。且部分反序列化依赖代码。

Shelve: 序列化句柄,使用句柄直接操作,非常方便。

4、Json的dumps和loads,直接操作内存中的数据类型:

数字、字符串、列表、字典、元组:这几种数据类似可以序列化。Json只能转化很少的数据类型

 

在Python中把其他数据类型转为json需要使用json模块

import json # 内置的

import json


 

# 1. 把字典类型转为json格式的数据


json模块中与四个方法
json.dumps---->序列化用的 json.loads------》反序列化

json.dump------》序列化,它可以直接写入文件 json.load-----------》它能够读取文件,然后自动反序列化

d = {"username":"kevin", 'age':18} # {"username": "kevin", "age": 18}
 序列化
print(type(d)) # dict
print(json.dumps(d), type(json.dumps(d))) # <class 'str'> {"username": "kevin", "age": 18}
 json格式的数据特点:字典里面的都变成了双引号

"""通过网络传输的数据一定是二进制"""
 反序列化:java给你发送了数据------------》
res = b'{"username": "kevin", "age": 18}'

 把二进制数据转为Python中得字典
print(res.decode('utf-8'), type(res.decode('utf-8'))) # {"username": "kevin", "age": 18}

s1 = res.decode('utf-8') # 把字符串格式的json转为抛Python中得字典

print(json.loads(s1), type(json.loads(s1)))
d1 = json.loads(s1)
print(d1['username'])

"""字节类型------》字符串-----------》字典"""

 

 


 1. 把字典格式的数据写入到文件中
 d = {'username':'jerry', 'age':18}
 写入文件必须是二进制或者字符串
 with open('a.txt', 'w', encoding='utf-8') as f:
 f.write(json.dumps(d))

2. 从文件中读取数据并且要是字典格式
with open('a.txt', 'r', encoding='utf-8') as f1:
 res=eval(f1.read()) # {'username': 'jerry', 'age': 18}
 print(res, type(res))


 3. 非常方便的写入文件
 with open('a.txt', 'w', encoding='utf-8') as f:
 # 1. 先把数据序列化,2. 把数据write进去
 json.dump(d, f)

4. 从文件读取json格式的字符串
 with open('a.txt', 'r', encoding='utf-8') as f1:
  1. 先反序列化,然后读出来
 res=json.load(f1) # {'username': 'jerry', 'age': 18}
 print(res, type(res))

 

 

 

 ————————————————————————————————————————————————————pickle模块

能够被序列化的数据类型不一样,json能够序列化的数据类型是有限的
有:dict list, tuple str int, float True False None

pickle能够序列化的类型:所有数据类型
"""它不好的地方在于,被pickle处理之后的数据只能够在Python中使用"""

#另外,pickle序列化之后的结果是二进制的

 

# d = {"a":1, 'b':2}
l = [1 ,2 ,3 ,4]
import pickle
# print(pickle.dumps(d)) # b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x01a\x94K\x01\x8c\x01b\x94K\x02u.'
print(pickle.dumps(l)) # b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04e.'
res = pickle.dumps(l)
print(pickle.loads(res))


# with open('a.txt', 'wb') as f:
# pickle.dump(l, f)

with open('a.txt', 'rb') as f:
print(pickle.load(f))

 

 

——————————————————————————————————————————————————hashilb模块(加密)

什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,'把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。'

 1. 先指定使用的加密算法:MD5 sha系列 sha1 sha128 sha256等
m = hashlib.md5() # 加密数据的时候,使用的是md5算法

2. 指定需要加密的数据
m.update(b'123456')
m.update(b'1234567894321424234234234324234234234234234324') # 323fda2da07ce11869e8c3737f36b96b
不管你需要加密的数据有多长,那么,得到的加密串结构都是固定长度的,前提是使用同一种算法
 3. 怎么取出加密之后的结果呢
print(m.hexdigest())
 e10adc3949ba59abbe56e057f20f883e

 

转载于:https://www.cnblogs.com/ethancui/p/5639139.html

细内上:

加盐:加密的时候在多一个干扰项
 注册功能

 

 

 

 二————————

 























标签:x00,Python,res,24days,json,print,序列化,pickle
From: https://www.cnblogs.com/wzh366/p/17722776.html

相关文章

  • 实验1:SDN拓扑实践进阶部分(使用python循环语句)
    #!/usr/bin/envpythonfrommininet.topoimportTopoclassMyTopo(Topo): def__init__(self): Topo.__init__(self) #host foriinrange(1,9): self.addHost("h"+str(i)) #switch foriinrange(1,11): self.addSwitch("s&quo......
  • 【Python】递归算法
    定义递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。思想函数调用函数本身,直到不能调用为止注意事项基本情况用于保证程序调用及时返回,不在继续递归,保证了程序可终止。递推关系,可将所有其他情况拆分到基本案例。​递推关系​:一个问题的结......
  • python问题汇总
    执行python文件报错:File"E:/ProgramFiles(x86)/PyCharm2021.1/fmz_zp/Python/基础/test.py",line531SyntaxError:Non-UTF-8codestartingwith'\xe4'infileE:/ProgramFiles(x86)/PyCharm2021.1/fmz_zp/Python/基础/test.pyonline531,butnoe......
  • appium+Python封装日志类
    创建logger.py文件放置在框架目录Common文件夹下,logger.py代码如下:#_*_coding:utf-8_*_importloggingimporttimeclassLogger(object):def__init__(self,logger):self.logger=logging.getLogger(logger)self.logger.setLevel(logging.DE......
  • Python 实现Word转PDF
    通过将Word文档转换为PDF,您可以确保文档在不同设备上呈现一致,并防止其他人对文档内容进行非授权修改。此外,在你需要打印文档时,转换为PDF还能确保打印输出的准确性。本文将介绍如何使用Python库将Word文档转换为PDF格式。Python将WordDOCX/DOC转换为PDFPython将Word......
  • Python,OpenCV的图像直角坐标系转极坐标系的函数
    Hough圆检测获取瓶口位置和大小'''hough圆变换'''cimg=cv2.cvtColor(bottle,cv2.COLOR_GRAY2BGR)#转换成彩色图circles=cv2.HoughCircles(median,cv2.HOUGH_GRADIENT,1,100,param1=100,param2=60,minRadius=150,maxRadius=160)......
  • 利用Python从现有的Excel表格中复制指定列生成新的Excel文件
    importxlrdimportxlwtimportpatternsaspatternsfile1='通讯专线汇总统计表.xls'file2='附件:历史存量邮电费明细.xls'data1=xlrd.open_workbook(file1)table1=data1.sheet_by_index(0)nrows1=table1.nrowszx_infos=[]#读取“通讯专线汇总统计表.xls”文件中......
  • 【Python爬虫】批量爬取豆瓣电影排行Top250
    ​    今天给大家分享下我刚开始接触Python时学习的爬虫程序,代码部分很简单,不过当时刚开始学习时还是走了不少弯路的。这个爬虫程序应该是很多书里面的入门练手程序,主要就是去豆瓣爬取电影评分排行前250。        本篇文章只做学习交流使用,不涉及任何商业用途......
  • python中,如何优雅的解析和管理命令行参数
    背景我们在编写python程序时,程序中经常会提供多种功能或者模式,在实际使用时根据不同的参数使用不同的功能。那么如何获取命令行传入进来的参数呢?一般方法一般情况下,我们会使用sys模块,如......
  • [885] How to generate automated tables in Word document with Python
    ref:HowtoGenerateAutomatedWordDocumentswithPythonref:docxtpl快速上手使用,数据填入以及循环写入表格CreatingaTemplateBeforeyoucanproceed,youmustfirstcreateyourveryowntemplatedocumentthatisbasicallyanormalMicrosoftWordDocument......